/usr/bin/qbittorrent-nox: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
这是一次在docker
中启动qbittorrent
报的错,疑似系统缺少libQt5Core.so.5
这个文件
经过搜索后,此次故障好像并不是丢失文件引起的,以下是解决方法
安装 binutils
这是一个二进制工具集,提供很多工具,strip
是其中一个
apt install binutils
处理文件
经过如下处理后,错误即消失
strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
路径就在/usr/lib/x86_64-linux-gnu/libQt5Core.so.5下,这就很奇怪了,为什么运行的时候还是提示不行呢?
无奈只得继续寻找解决方法。很快,在SuperUser上找到了答案,大概就是WSL的兼容性一般,相对完整的Linux内核可能缺失了系统调用renameat2()导致的虽然libQt5Core.so.5存在,但是在gnuplot程序运行时系统在寻找动态链接库的时候将这个.so忽略掉了,在GitHub上有[相关讨论]2。
strip
这个工具会去掉文件中的符号信息,减少体积,可用于可执行文件、动态库等。调试时需要符号信息才可以调试