Qt5的链接器目录

雷扎·阿卜杜勒哈基姆

我想运行基于Qt5共享对象的应用程序。虽然我已经apt installqt5-defaultqttools5-devqttools5-dev-tools我得到的错误波纹管:

/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.7' not found
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found

我还尝试更改了LD_LIBRARY_PATH和的一些环境变量DYLD_LIBRARY_PATH,但未成功!

你有什么建议?

伦纳特·罗兰德

在构建应用程序时,您针对哪个版本的Qt5通过查看当前选择的工具包,您可以在QtCreator中看到它

在此处输入图片说明

如果您只是从二进制文件安装了QtCreator,则它附带了它自己的Qt5共享库集,您的应用程序已链接共享库,但是这些库的OS版本(从apt-get和类似版本安装的)可能不匹配。

当您尝试在QtCreator外部单独运行该应用程序时,它可能会尝试链接到通常较旧的lib的OS版本。

有很多方法可以解决此问题。如果您不关心最新版本的Qt,则首选方法是简单地构建OS支持的Qt库。您可以通过创建一个新工具包来做到这一点,该工具包指定按照过程针对OS的库进行构建

另一种方法是将您从QtCreator中使用的共享库与应用程序一起提供,以便它们将覆盖OS的共享库通常,只要将它们与可执行文件夹在同一文件夹中就可以解决问题,因为它们会在/usr/lib/whateveretc等文件之前找到

还有另一种方法是构建自己的Qt静态版本并与之链接。这具有一些优点和缺点。这是一个高级主题,因此我将不做详细介绍(您可以在此处看到)。但是在这种情况下,Qt库内置在您的应用程序中,并且不会依赖于任何外部Qt库版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章