我想运行基于Qt5共享对象的应用程序。虽然我已经apt install
编qt5-default
,qttools5-dev
和qttools5-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/whatever
etc等文件之前找到。
还有另一种方法是构建自己的Qt静态版本并与之链接。这具有一些优点和缺点。这是一个高级主题,因此我将不做详细介绍(您可以在此处看到)。但是在这种情况下,Qt库内置在您的应用程序中,并且不会依赖于任何外部Qt库版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句