如何使用QtCreator将内部库添加到构建中

时间:2016-05-06 13:00:18

标签: c++ qt shared-libraries qt-creator libraries

我正在使用QT创建者开发一个应用程序。

我想构建一个不需要任何外部库的应用程序,但它应该在其构建中包含所有库我希望这可以解决以下问题:

如果我通过IDE(qtcreator)运行应用程序,程序运行没有任何问题,如果我通过终端运行它(使用“./ application”)它会打印出跟随错误:

  

/home/helias/software/Qt/5.6/gcc_64/libexec/QtWebEngineProcess:错误的同时   加载共享库:libQt5WebEngineCore.so.5:无法打开共享   目标文件:没有这样的文件或目录

那么,如何将库集成到应用程序的发行版中,以免遇到库的任何问题?

2 个答案:

答案 0 :(得分:3)

部署Qt应用程序(与任何应用程序一样)要求您在加载程序搜索路径中拥有所需的库。 Qt Creator可能在运行应用程序时设置LD_LIBRARY_PATH变量或设置构建的可执行文件的RPATH。在您的应用程序上运行 ldd ,以查看无法找到的库:

$ ldd ./application

这将打印所需的库及其位置:

linux-vdso.so.1 (0x00007ffc63cc3000)
libQt5Widgets.so.5 => /usr/lib/libQt5Widgets.so.5 (0x00007f8a89e04000)
libQt5WebEngineCore.so.5 => /usr/lib/libQt5WebEngineCore.so.5 (0x00007f8a85467000)
libQt5Quick.so.5 => /usr/lib/libQt5Quick.so.5 (0x00007f8a84e7f000)
libQt5Gui.so.5 => /usr/lib/libQt5Gui.so.5 (0x00007f8a846fc000)
libQt5Qml.so.5 => /usr/lib/libQt5Qml.so.5 (0x00007f8a8410b000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007f8a83d9f000)
libQt5WebChannel.so.5 => /usr/lib/libQt5WebChannel.so.5 (0x00007f8a83b82000)
libQt5Positioning.so.5 => /usr/lib/libQt5Positioning.so.5 (0x00007f8a83942000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007f8a83278000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f8a83007000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f8a82dea000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f8a82a68000)

如果加载程序找不到库,它会告诉你 NOT FOUND 。在这种情况下,您可以通过安装它们,或者将库复制到可执行文件 RPATH 中的目录,使它们在适当的位置可用。最简单的方法是为您的发行版安装Qt库。正如你可以看到我的ldd输出,我的安装在/ usr / lib中找到它们。每个Linux发行版上所需的包都是不同的。

部署Qt应用程序的权威来源似乎是here

答案 1 :(得分:0)

您想将Qt框架所需的库绑定到您的应用程序中吗?

如果是这样,那么首先阅读许可条款,就像我了解您的需要一样,您正在使用静态库构建应用程序,这是免费或LGPL版本的Qt所不允许的,因为您需要购买商业版。

使用静态库构建应用程序时,可以参考voidrealms.com教程,了解如何使用静态链接库构建应用程序。