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

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

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

【问题讨论】:

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

标签: linux qt shared-libraries dynamic-linking


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2010-12-29
      • 2011-09-07
      • 1970-01-01
      • 2019-08-27
      相关资源
      最近更新 更多