背景
首先下载cutecom
sudo apt-get install cutecom
下载完成之后,运行自己的写的qt程序(使用的5.12.12)的版本。
如果运气好,qt程序无法启动,并且出现类似提示
cannot mix incompatible qt library(5.12.8) with this library(5.12.12)
大概意思就是链接的qt库版本不匹配。
原因
之前使用apt命令下载了带有图形界面的cutecom,使用的qt依赖库版本为5.12.8,其依赖的qt文件一般在 /lib/x86_64-linux-gnu文件夹中,而你的程序依赖版本为5.12.12,链接到了此路径下,因此,出现qt库不匹配提示。
解决方案
方案1
卸载cutecom,之后避免用apt命令下载带有图形界面的程序
sudo apt purge cutecom # 删除 cutecom 及其相关的配置文件
sudo apt autoremove # 删除 cutecom 的依赖
rm -rf ~/.cutecom # 删除 cutecom 在用户主目录下的配置文件(如有需要)
此方案可行,但不推荐
方案2
修改qt程序运行时的链接路径
2.1使用patchelf工具
可以选择使用安装包下载,也可是使用apt命令下载
sudo apt install patchelf # 下载工具
patchelf --set-rpath ./ test #修改可执行程序test的rpatch为当前的路径下
在使用ldd命令查看可执行程序的依赖库链接路径
ldd Test # Test为可执行程序文件名
2.2在系统配置中添加路径
使用此方法添加路径下的文件最好是自己开发的文件,因为程序未必优先从添加的路径中去查找,设置完成之后可能查找到系统目录下的库。
sudo vim /etc/ld.so.conf
在文件末尾添加依赖库的路径(请勿在初始的第一行之前写入,会导致命令无法运行)。
保存退出之后,输入命令
sudo ldconfig # 生效配置
再使用ldd去查看库的链接路径