Linux 下使用 linuxdeployqt 打包QT程序

Linux 下使用 linuxdeployqt 打包QT程序

当别人需要使用我们的 Qt 程序时,我们可以用打包工具将程序打包发给他,这样就不用发送整个 Qt 工程。由于Qt 跨平台的特性,可以用不同的工具打包它。本篇文章是在 Linux 下使用 linuxdeployqtQt 程序打包成 .AppImage 应用程序。

环境介绍:

  • Ubuntu 16.04
  • QT 5.12.12
  • linuxdeployqt(built on 2023-04-23)

注: 当我们把打包好的应用程序发给别人使用,可能会遇到 GLIBC库 版本过高的错误,也有很多办法,不过个人觉得使用低版本的 Linux 系统作为编译机这个方法简单点,而且兼容性好一点,所以我才使用 Ubuntu 16.04 这个版本作为编译机。

一. 安装 linuxdeployqt

直接从 Releases · probonopd/linuxdeployqt (github.com) 中下载编译好的 linuxdeployqt-continuous-x86_64.AppImage 应用程序文件。(从最新的版本开始下载,如果用不了可以降版本)
在这里插入图片描述

下载好之后,执行下面命令(这里默认 Ubuntu 上已经配置了 Qt 环境)

chmod +x linuxdeployqt-continuous-x86_64.AppImage  # 赋予可执行权限
mv linuxdeployqt-continuous-x86_64.AppImage linuxdeployqt  # 改名以便后面操作
./linuxdelpoyqt -version   # 查看是否安装成功,若输出版本信息表示安装成功。
(参数说明 机翻)
Usage: linuxdeployqt <app-binary|desktop file> [options]
Options:
-always-overwrite :即使目标文件存在,也复制文件。
-appimage :创建 AppImage (意味着 -bundle-non-qt-libs)。
-bundle-non-qt-libs :还捆绑非核心、非 Qt 库。
-exclude-libs=<list> :应排除的库列表,用逗号分隔。
-ignore-glob=<glob> :相对于 appdir 的 Glob 模式在何时忽略寻找库。
-executable=<path> :让给定的可执行文件使用已部署的库也
-extra-plugins=<list> :应该部署的额外插件列表,用逗号分隔。
-no-copy-copyright-files :跳过版权文件的部署。
-no-plugins :跳过插件部署。
-no-strip :不要在二进制文件上运行“strip”。
-no-translations :跳过翻译部署。
-qmake=<path> :要使用的 qmake 可执行文件。
-qmldir=<path> :扫描给定路径中的 QML 导入。
-qmlimport=<path> :将给定路径添加到 QML 模块搜索位置。
-show-exclude-libs :打印排除库列表。
-verbose=<0-3> :0 = 无输出,1 = 错误/警告(默认),2 = 正常,3 = 调试。
-updateinformation=<更新字符串>:嵌入更新信息STRING; 如果安装了zsyncmake,则生成zsync文件
-qtlibinfix=<infix> :如果您的 Qt 发行版有中缀,请调整 .so 搜索。
-version :打印版本信息。

在这里插入图片描述

二. 打包成 .AppImage 应用程序

  1. 打开 Qt 使用 Release 模式构建源代码,然后编译。
    在这里插入图片描述

  2. 找到 Release Build 的文件夹位置,然后将生成的可执行文件复制到另一个空文件夹下。
    在这里插入图片描述
    在这里插入图片描述

  3. 然后在文件夹下创建一个 .desktop 后缀的文件,这是桌面应用配置文件,在放一个图片用来当应用图标。
    (详细的 desktop 文件的编写可以参考官方描述 UnityLaunchersAndDesktopFiles - Community Help Wiki

[Desktop Entry]
Type=Application
Name=这里填应用的名字
Comment=这里描述该程序功能
Exec=这里是可执行文件的路径。仅当可执行文件不在 $PATH 变量中指定的任何路径中时,才必须使用可执行文件的完整路径。例如,路径 /usr/bin 内的任何文件都不需要在 Exec 字段中指定其完整路径,而只需指定其文件名即可,或者在当前路径下也不用。
Icon=这里是应用图标。例如,目录 /usr/share/pixmaps 下的所有图标不需要指定其完整路径,但不需要指定不带扩展名的文件名。例如,如果图标文件是 /usr/share/pixmaps/wallch.png,则图标字段应该只是“wallch”。或者在当前路径下也不用。所有其他图标都应指定其完整路径。
Categories=Application;

在这里插入图片描述
在这里插入图片描述

完成以上工作,会有三个文件,然后执行下面命令:

~/Downloads/linuxdeployqt hello -appimage
# hello 是可执行文件的名字
# -appimage 是参数

出现下图内容表示打包成功
在这里插入图片描述

创建完成后,除了上面三个自己创建的,其他的都是命令生成的,双击 .AppImage 后缀文件,即可运行,给别人使用也只需要把 .AppImage 后缀文件发过去即可。
在这里插入图片描述
在这里插入图片描述

如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Linux系统下,有两种常用的方法可以打包QT程序。 第一种方法是通过脚本进行打包。这种方法简单方便,但是打包程序不能在其他干净的Linux系统中运行。你可以参考中提到的方法,编写一个脚本文件来进行打包。具体步骤如下: 1. 首先,确保你已经安装了所需的依赖库。你可以使用ldd命令来查找程序所需的共享库。 2. 创建一个脚本文件,可以使用任何你熟悉的文本编辑器。在脚本文件中,你需要指定程序的入口点以及程序所需的共享库路径。 3. 接下来,使用chmod命令给脚本文件添加可执行权限。 4. 最后,运行脚本文件来进行打包打包完成后,你会得到一个包含可执行文件和所需共享库的目录。 但需要注意的是,通过这种方式打包QT程序不能在其他干净的Linux系统中运行,所以不太推荐使用。 第二种方法是使用linuxdeployqt工具进行打包。这个工具可以方便地将QT程序打包成一个独立的可执行文件,可以在任何Linux环境中直接运行。你可以从中提供的链接下载linuxdeployqt使用linuxdeployqt进行打包的步骤如下: 1. 首先,下载并解压linuxdeployqt工具。 2. 将你的QT程序复制到linuxdeployqt的目录中。 3. 打开终端,并切换到linuxdeployqt的目录。 4. 运行以下命令来打包程序: ``` ./linuxdeployqt <path_to_your_qt_program> -appimage ``` 其中,`<path_to_your_qt_program>`是你的QT程序的路径。 5. 打包完成后,你将得到一个AppImage文件,这个文件就是你的打包好的程序。 通过使用linuxdeployqt工具进行打包,你可以得到一个可以在任何Linux环境中直接运行的QT程序。这种方法更加方便和可靠,推荐使用。 参考文献: 目前我接触到的Linux下的QT程序打包方法主要有两种:第一种:通过脚本进行打包,这种方法简单方便,但是通过这种方式打包QT程序,并不能放到另一台干净的Linux系统下运行,所以不太推荐;第二种:通过Linuxdeployqt进行打包,通过这种方法打包QT程序也很方便,而且打包程序可以放到任何Linux环境下直接运行。下面我将详细介绍以下两种打包方式,大家可以根据自己的实际使用情况任意选择打包方式。 1.下载linuxdeployqt:https://github.com/probonopd/linuxdeployqt/releases

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值