已安装对应版本libQt5Core.so但libQt5Concurrent.so无法找到它的问题求助
解决libQt5Concurrent.so找不到libQt5Core.so.5的问题
这问题我之前踩过几次坑,大概率是符号链接缺失导致的,咱们一步步来排查解决:
第一步:确认符号链接是否存在
先看看/lib目录下有没有带版本后缀的Qt5Core库链接,执行命令:ls -l /lib/libQt5Core.so*正常情况下应该能看到类似这样的输出(版本号可能不同):
lrwxrwxrwx 1 root root 19 Aug 1 10:00 libQt5Core.so -> libQt5Core.so.5.12.8 lrwxrwxrwx 1 root root 19 Aug 1 10:00 libQt5Core.so.5 -> libQt5Core.so.5.12.8 -rwxr-xr-x 1 root root 5987456 Aug 1 10:00 libQt5Core.so.5.12.8如果你的输出里只有
libQt5Core.so,没有.so.5的符号链接,那这就是问题根源了。第二步:手动创建符号链接
直接基于已有的libQt5Core.so创建指向.so.5的链接:sudo ln -s /lib/libQt5Core.so /lib/libQt5Core.so.5要是你知道具体的版本文件(比如
libQt5Core.so.5.x.x),也可以直接指向它,这样更规范:sudo ln -s /lib/libQt5Core.so.5.12.8 /lib/libQt5Core.so.5第三步:刷新动态链接库缓存
创建完链接后,得让系统更新动态库索引,执行:sudo ldconfig第四步:验证修复效果
再运行ldd /lib/libQt5Concurrent.so,这时候应该就能正常找到libQt5Core.so.5了。
另外补充个小排查点:虽然从ldd输出看都是i386架构,但如果实在还是不行,可以确认下两个库的架构是否一致,执行:
file /lib/libQt5Core.so /lib/libQt5Concurrent.so
输出里应该都显示ELF 32-bit LSB shared object,要是架构不一样,那得重新安装对应架构的库。
内容的提问来源于stack exchange,提问作者krojew




