如何使用应用程序部署 Qt 库?

Posted

技术标签:

【中文标题】如何使用应用程序部署 Qt 库?【英文标题】:How do I deploy Qt libraries with an application? 【发布时间】:2015-12-19 18:25:37 【问题描述】:

这应该很简单,但我遇到了麻烦。我想在安装文件夹中包含一些与我的应用程序共享的 Qt 库,这样用户就不必单独下载 Qt。在 Windows 上,这似乎工作正常,但 Ubuntu 抱怨当 Qt 库与应用程序位于同一文件夹中时找不到它们。

如何将安装目录添加到共享库搜索路径?

【问题讨论】:

小心,因为这是可能违反许可权的一件事。首先检查 Qt 库是否允许您在未经许可的情况下分发其软件。 【参考方案1】:

我可以将安装目录添加到共享库搜索路径,方法是在 .pro 文件中添加以下行,将二进制文件的 rpath 设置为 $ORIGIN(安装文件夹)。我需要在当前机器(/usr/lib/qt5.5 和 /usr/lib/qt5.5/lib)上添加 QT 库的位置,以便项目可以在 QtCreator 中构建。

unix:!macx 
    # suppress the default RPATH if you wish
    QMAKE_LFLAGS_RPATH=
    # add your own with quoting gyrations to make sure $ORIGIN gets to the command line unexpanded
    QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\':/usr/lib/qt5.5:/usr/lib/qt5.5/lib"

unix:!macx 行使其仅适用于 linux)

【讨论】:

【参考方案2】:

Windows、Linux 和 OSX 的行为完全不同。 Windows 最简单:转储应用程序目录中的所有 dll。接下来是 OSX,Linux 是最困难的。

Linux 有特定的搜索路径来搜索共享对象。这些搜索路径主要是系统库,也可能是一些用户库。由于您不想弄乱用户的系统文件,因此您更愿意将共享对象放在应用程序目录中。这是可能的,但您必须告诉 Linux 读取该目录。您可以通过设置环境变量 LD_LIBRARY_PATH 来做到这一点。您可以使用脚本执行此操作。见my answer。

【讨论】:

以上是关于如何使用应用程序部署 Qt 库?的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用共享库部署 Qt 应用程序时出错

Qt程序部署到多平台,如何?

使用 Mac OS X 应用程序部署 Qt - 如何不加载任何插件?

使用共享库在 Ubuntu 上部署 Qt 应用程序二进制文件

qt怎么部属

Linux Mint x64:Qt 5.3.1 插件部署:不兼容的 qt 库