如何使用应用程序部署 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 库?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mac OS X 应用程序部署 Qt - 如何不加载任何插件?