【问题标题】:How to create a qt application for all unix versions?如何为所有 unix 版本创建一个 qt 应用程序?
【发布时间】:2014-09-22 14:29:30
【问题描述】:

我已经能够在 Qt5.2.1 中创建一个依赖于 webkit 和脚本的应用程序。但是我能够为 14.04 版本的 Ubuntu 创建一个 deb 包。但是我怎样才能使它成为独立的应用程序。我已经看到了静态和动态构建。我尝试了静态构建,但我不知道如何为静态构建包含 webkit。也可以使用共享库方法来创建独立应用程序。请在这里帮帮我..

【问题讨论】:

  • 这几乎总是一个失败的案例,因为 1. 它是不支持的。 2. 它没有利用平台库中可能存在的任何特定于平台的调整。相反,您应该定义您支持的发行版,并仅为这些发行版构建,并提供本机软件包。

标签: qt build static qt5


【解决方案1】:

部署动态链接的 Qt 应用程序:

您应该将 Qt so 文件放在可执行文件的发布版本中。这些是libQtCore.solibQtGui.so,也可能是您使用过的其他模块的那些。这些 so 文件位于您安装的 Qt 目录中的 lib 文件夹或目录 /usr/lib/i386-linux-gnu 中。如果您使用插件,您应该将它们的 so 文件放在二进制文件旁边名为 plugins 的文件夹中。如果使用图标和图像,您应该将它们的 so 文件(如 libqico.solibqsvg.so)发送到名为 imageformats 的文件夹中。

收集所需的共享库:

如果您希望您的应用程序在裸安装的 Linux 上独立运行,您应该收集所有依赖的共享库并将它们放在您的应用程序目录中。你可以简单地通过一个名为cpld 的shell 脚本来完成它。您可以轻松地将所有依赖项复制到一个文件夹中。

值得注意的是,您可以将它放在您的 .pro 文件中,以使动态链接器在 Linux 运行时与您的 Qt 应用程序在同一目录中查找:

unix:{
    # 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\'"
}

【讨论】:

  • 我在文件夹名称依赖项中添加了共享库依赖项,并将其添加为 QMAKE_LFLAGS_RPATH=dependecy/ 在当前工作目录中的 .pro 文件中说 app-1.0 。但是在生成可执行文件并检查之后它仍然指向系统路径,如 usr/lib ro usr/inc 我如何从当前工作目录 app-1.0 指向它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 2012-02-20
  • 1970-01-01
相关资源
最近更新 更多