在Loongarch下编译Remmina 1.4.5版本
起因
之前一直使用loongnix作为跳板机,连接宿舍电脑,然后一直使用Remmina连接,后面看了下Remmina的版本,是1.3.3。
最新版都已经到了1.4.5了已经,我还在用这么老的版本,太不舒服了(遂编一个试试。全程按照官方文档走,没有什么难点,浅浅记录一下。
安装依赖
1 | sudo apt install build-essential git-core libssh-dev cmake libx11-dev libxext-dev libxinerama-dev \ |
报错:
解决方法:
删除libssh-4,再安装libssh-dev
卸载原来的remmina
1 | sudo apt purge "remmina*" "libfreerdp*" "libwinpr*" "freerdp*" |
编译FreeRDP
配置FreerDP进行编译(别忘了包括-dwith_pulse = on)
1 | cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON -DWITH_CUPS=on -DWITH_PULSE=on -DCMAKE_INSTALL_PREFIX:PATH=/opt/remmina_devel/freerdp . |
编译FreeRDP并安装
开始编译
1 | make && sudo make install |
报错:
原因:
SSE2是x86特有的,而基于Loongarch的3A5000不支持SSE2(提供了一组更高级的优化指令,用于执行单指令多数据操作。),可使用以下命令查看
1 | cat /proc/cpuinfo |
一个X86服务器:
解决方法:
在CMake时将sse2选项改为off
1 | cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=OFF -DWITH_CUPS=on -DWITH_PULSE=on -DCMAKE_INSTALL_PREFIX:PATH=/opt/remmina_devel/freerdp . |
编译完成
使系统动态加载程序了解您安装的新库
1 | echo /opt/remmina_devel/freerdp/lib | sudo tee /etc/ld.so.conf.d/freerdp_devel.conf > /dev/null |
关于这条命令:
解释:
这段命令将
/opt/remmina_devel/freerdp/lib
目录添加到系统的动态链接器搜索路径中,并更新动态链接器缓存。详细说明:
echo /opt/remmina_devel/freerdp/lib | sudo tee /etc/ld.so.conf.d/freerdp_devel.conf > /dev/null
echo
命令将/opt/remmina_devel/freerdp/lib
目录路径输出到标准输出。sudo
命令以 root 权限运行后续命令。tee
命令从标准输入读取数据,并将其写入指定的文件(/etc/ld.so.conf.d/freerdp_devel.conf
)和标准输出。>
重定向标准输出到/dev/null
,有效地丢弃它。此命令的结果是将
/opt/remmina_devel/freerdp/lib
路径添加到/etc/ld.so.conf.d/freerdp_devel.conf
文件中,该文件是动态链接器搜索路径的配置文件。sudo ldconfig
ldconfig
命令更新动态链接器缓存,该缓存包含已安装共享库的位置。sudo
命令以 root 权限运行ldconfig
,这是必要的,因为ldconfig
需要更新系统范围的缓存。执行此命令后,系统将能够在
/opt/remmina_devel/freerdp/lib
目录中找到和加载共享库。
在/usr/local/bin中创建一个指向可执行文件的符号链接
1 | sudo ln -s /opt/remmina_devel/freerdp/bin/xfreerdp /usr/local/bin/ |
测试FreeRDP能否正常运行
使用命令建立连接:
1 | xfreerdp +clipboard /sound:rate:44100,channel:2 /v:10.169.1.251 /u:LMark |
可以看到,正常打开了远程桌面
编译Remmina
接下来拉取remmina的源码,并进行编译
1 | cd ~/remmina_devel |
配置Remmina进行编译
1 | cd Remmina |
报错:
原因:缺少CURL库
解决方法,安装libcurl4-openssl-dev
库
1 | sudo apt install libcurl4-openssl-dev |
编译安装完成:
创建一个指向可执行文件的符号链接
1 | sudo ln -s /opt/remmina_devel/remmina/bin/remmina /usr/local/bin/ |
1 | remmina #直接运行 |
报错:
解决方法:使用root权限运行。
成功运行,并查看当前版本,为最新的1.4.35
创建桌面图标
在桌面目录下,创建remmina.desktop
文件,并写入以下内容:
1 | [Desktop Entry] |
效果如下:
制作deb包
编译出软件之后,打deb包是一个很重要的工作
首先安装dh_make
1 | #安装dh_make |
制作deb包有两种方法:基于源码包制作和基于二进制包制作,我这里选择基于源码制作的方式。
1 | cd Remmina |
可以发现,源码根目录下多了debian的配置目录
然后直接打包
1 | dpkg-buildpackage -b -d -uc -us -nc -a loongarch64 |
然后就报错了:
根据报错信息可知,是因为这个共享库没有信息,这可能是因为这是本地安装的,而是自己编译或引用的,这需要我们在debian/rules文件里添加编译标识:
然后再打包,就可以了
参考资料
如何测试你的Linux支持SSE2 - 或代码 (orcode.com)
Compile on Debian 10 Buster · Wiki · Remmina / Remmina · GitLab