linux环境下,类似报错cannot mix incompatible qt library(5.12.8) with this library(5.12.12)

背景

首先下载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为当前的路径下

linux环境下,类似报错cannot mix incompatible qt library(5.12.8) with this library(5.12.12)_第1张图片
在使用ldd命令查看可执行程序的依赖库链接路径

ldd  Test # Test为可执行程序文件名
2.2在系统配置中添加路径

使用此方法添加路径下的文件最好是自己开发的文件,因为程序未必优先从添加的路径中去查找,设置完成之后可能查找到系统目录下的库。

sudo vim /etc/ld.so.conf

linux环境下,类似报错cannot mix incompatible qt library(5.12.8) with this library(5.12.12)_第2张图片
在文件末尾添加依赖库的路径(请勿在初始的第一行之前写入,会导致命令无法运行)。
保存退出之后,输入命令

sudo ldconfig  # 生效配置

再使用ldd去查看库的链接路径

你可能感兴趣的:(1024程序员节,qt,linux)