一、问题描述
在执行qt 发布打包时,其中总是报
./libqxcb.so: /lib64/libQt5Core.so.5: version `Qt_5.14' not found (required by ./libqxcb.so)
讨厌的很,修改临时配置文件根本不起作用
二、解决过程
后来尝试/etc/ld.so.conf解决
[admin@dev platforms]$ ./copylib.sh libqxcb.so
./libqxcb.so: /lib64/libQt5Core.so.5: version `Qt_5.14' not found (required by ./libqxcb.so)
将qt 所在的路径 加到 /etc/ld.so.conf中 再执行sudo Idconfig 生效
[root@dev etc]# vi ld.so.conf
[root@dev etc]# sudo ldconfig
[root@dev etc]#
centos7 上
三、补充说明
这里补充一下:
sudo idconfig 非常重要,要不然不生效,centos 7与centos stream9 都会报错,
四、centos stream 9 上实操部分截图
[root@localhost platforms]# ./copylib.sh libqxcb.so
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5XcbQpa.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5Gui.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
[root@localhost platforms]# chmod 777 copylib.sh
[root@localhost platforms]# ./copylib.sh libqxcb.so
mkdir: 无法创建目录 “/root/桌面/public/public/platforms/lib”: 文件已存在
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5XcbQpa.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5Gui.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
[root@localhost platforms]# ./copylib.sh libqxcb.so
mkdir: 无法创建目录 “/root/桌面/public/public/platforms/lib”: 文件已存在
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5XcbQpa.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/libqxcb.so:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'/lib64/libQt5Gui.so.5:' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'version' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'`Qt_5_PRIVATE_API'\''' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'not' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'found' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'(required' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'by' 的文件状态(stat): 没有那个文件或目录
cp: 无法获取'./libqxcb.so)' 的文件状态(stat): 没有那个文件或目录
[root@localhost platforms]#
centos stream 9上执行时报的错。
配置生效命令
配置生效后,再执行很安静,没有报错了,到lib下找类库,马发现很多
将这些类库copy 放到正在发布的qt的根目录下即可
以上是 centos stream9 上执行的过程
五、总结:
经过分析,libqxcb.so依赖库应该从qt安装目录下查找,错误提示信息中显示搜索路径为系统库目录,因此可以肯定是搜索路径的问题,因此需要添加环境变量,修改ld.so.config文件
在这里插入图片描述
修改后生效使用命令
再执行打包的命令时就可以了
重点是:/etc/ld.so.conf 中将自己机器的qt 路径放上去
本机QT路径是在:/opt/Qt5.14.1/5.14.1/gcc_64,所以,上面的配置为
**/lib
**/plugins/platforms