首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt linux中的windeployqt.exe

Qt linux中的windeployqt.exe
EN

Stack Overflow用户
提问于 2018-07-19 23:35:32
回答 1查看 873关注 0票数 0

我有一个应用程序,准备发布了。在windows上,我只需在专用的qt应用程序构建的'windeployqt.exe MyApp.exe‘文件夹中键入’MyApp.exe‘。我也试图在kali linux上做同样的事情(我没有时间安装其他基于deb的发行版)。我在找三个小时的解决方案,却找不到好的东西。那么,在没有安装Qt的情况下,如何使应用程序在其他linux计算机上可执行呢?

EN

回答 1

Stack Overflow用户

发布于 2018-07-20 08:56:25

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

  1. 您的应用程序通常无法使用本机图标/字体/其他主题
  2. 有时,由于某些意外的系统更新(例如,AppImages ),您的破坏OpenSSL库的二进制兼容性可能会偶尔停止工作。

Linux的其他打包选项包括:

  1. 将应用程序与Qt的静态版本链接起来。这是电报所用的方法。这些指令可以找到这里。但是,请注意,在商业封闭源代码应用程序中使用这种方法通常需要商业Qt许可证。使用LGPL可能是可能的,但这将非常麻烦:您必须向客户提供编译好的对象文件,以便他们可以替换它们并重新链接应用程序。还要注意的是,如果您打算创建的应用程序是开源的,Linux发行版的维护人员通常不会同意分发静态链接的应用程序--这违反了许多发行版的基本规则,根据这些规则,应用程序不应该捆绑它们的依赖项,而应该使用系统提供的库。从例如安全的角度来看,这很重要--如果将来在Qt中发现了一些安全威胁,那么可以在Qt库本身内修复它,然后使用该库的所有应用程序也将是安全的--这在使用Qt的静态版本构建的应用程序中并不那么容易实现。
  2. 为目标系统创建本地包--即Debian/Ubuntu系统及其衍生物的deb包,Fedora、OpenSUSE和其他基于rpm的发行版的rpms包,Arch的PKGBUILD包,以及各种其他发行版的各种其他包,其中数百个。它的优点是与系统的其他部分进行了良好的集成:本地主题等。此外,您还可以获得共享库的安全性修复的所有优点。
  3. 使用平板机捕捉包--这些是由RedHat和Canonical分别开发的现代应用程序打包格式,目的是简化应用程序依赖关系的管理。
  4. 使用使用共享库的通用方法 --使用这种方法,您需要将应用程序打包为一个存档文件,其中包含一个包含应用程序及其所有依赖项的目录,并以共享库的形式存在--类似于在Windows上部署dlls的方法,即将dll放在应用程序旁边。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51433120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档