【问题标题】:Qt Creator - windeployqt.exe in linuxQt Creator - linux中的windeployqt.exe
【发布时间】:2018-07-19 23:35:32
【问题描述】:

我有一个准备发布的应用程序。在 Windows 上,我只需在特殊 qt cmd 中的应用程序构建的“发布”文件夹中键入“windeployqt.exe MyApp.exe”。我正在尝试在 kali linux 上做同样的事情(我没有时间安装其他基于 deb 的发行版)。我正在寻找解决方案三个小时,但我找不到任何好的东西。那么,如何让应用程序在没有安装 Qt Creator 的其他 linux 计算机上可执行?

【问题讨论】:

标签: qt


【解决方案1】:

有很多方法可以在 Linux 上部署 Qt 应用程序。在linuxdeployqtlinuxdeploy-plugin-qt 的帮助下创建的AppImage 是一种选择,甚至可能是最简单的一种选择,但它也有其缺点。根据我的个人经验,我可以想到两个:

  1. 您的应用通常无法使用原生图标/字体/其他 themes
  2. 有时,您的 AppImage 有时可能会由于某些意外的系统更新(例如 break the binary compatibility of OpenSSL libraries)而停止工作。

适用于 Linux 的其他打包选项包括:

  1. 将应用程序与静态版本的 Qt 链接。它是 使用的方法,例如通过电报。可以找到说明 here。 但是请注意,使用这种方法进行商业封闭 源应用程序通常需要商业 Qt 许可证。 可能有可能摆脱 LGPL,但这将是非常 繁琐:您必须为客户提供已编译的对象 文件,以便他们可以替换它们并重新链接应用程序。还要小心 事实上,如果您打算创建的应用程序将 如果是开源的,Linux 发行版的维护者会 一般不同意分发静态链接的应用程序 - 这违反了许多发行版的基本规则 应用程序不应捆绑其依赖项,而应 使用系统提供的库。这很重要,例如 安全视角——如果在 Qt 中发现了一些安全威胁 未来,它可以在 Qt 库本身和所有 使用该库的应用程序也将是安全的 - 使用构建的应用程序不容易实现的东西 Qt 的静态版本。

  2. 为目标系统创建本机包 - 即 deb 包 Debian/Ubuntu 系统及其衍生系统,rpms 用于 Fedora, OpenSUSE 和其他基于 rpm 的发行版, PKGBUILD 拱门 Linux 和其他各种发行版的各种其他类型的软件包, 数百个。优点是与系统其余部分的良好集成:本机主题等。您还可以获得共享库安全修复程序的所有优点。

  3. 使用 flatpaksnap 包 - 这些是 RedHat 和 Canonical 分别开发的现代应用程序打包格式,旨在简化应用程序依赖项的管理。

  4. 使用generic approach 使用共享库 - 使用这种方法,您需要将您的应用程序打包为一个存档,其中包含一个目录,其中包含您的应用程序及其所有依赖项(以共享库的形式) - 类似于在 Windows 上的部署方法,您将 dll 与应用程序放在一起。

我建议先尝试 AppImage,然后为目标发行版创建本机包。

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多