在 Ubuntu 下对 Qt 应用进行打包(发布)主要有两种常用方式,我会为你详细讲解。
方法一:使用 linuxdeployqt (推荐,最简单快捷)
linuxdeployqt 是一个专门为 Linux 应用打包的工具,特别适合 Qt 应用。它能自动帮你收集所有依赖的库文件(包括 Qt 库和系统库),并生成一个可直接运行的文件夹或 AppImage。
步骤 1: 安装 linuxdeployqt
你可以从其 GitHub 仓库下载预编译好的二进制文件。
-
打开终端,下载最新版本(请根据你的系统架构选择
amd64或i386):bash
运行
-
# 访问 https://github.com/probonopd/linuxdeployqt/releases 查看最新版本号 # 这里以 6-x86_64 为例 wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage -
赋予它可执行权限:
bash
运行
-
chmod +x linuxdeployqt-continuous-x86_64.AppImage -
(可选)将其移动到
/usr/local/bin方便全局调用:bash
运行
-
sudo mv linuxdeployqt-continuous-x86_64.AppImage /usr/local/bin/linuxdeployqt
步骤 2: 编译你的 Qt 项目
- 打开 Qt Creator,确保你的项目是 Release 模式(不是 Debug)。
- 点击 "Build" 按钮,编译出可执行文件。通常这个文件会在项目目录下的
build-<项目名>-Desktop_Qt_<版本>_GCC_64bit-Release或类似的文件夹里。
步骤 3: 使用 linuxdeployqt 打包
-
打开终端,进入到你的 Release 可执行文件所在的目录。
bash
运行
-
# 示例路径,请替换成你自己的路径 cd ~/QtProjects/build-MyApp-Desktop_Qt_5_15_2_GCC_64bit-Release -
运行
linuxdeployqt命令。bash
运行
-
# 假设你的可执行文件名为 MyApp linuxdeployqt MyApp -appimage-appimage参数会让linuxdeployqt生成一个.AppImage文件,这是一种非常方便的打包格式,用户可以直接下载并执行,无需安装。
步骤 4: 找到并测试你的打包文件
命令执行完毕后,你会在当前目录下看到一个新生成的 .AppImage 文件,例如 MyApp-x86_64.AppImage。
-
赋予它可执行权限:
bash
运行
-
chmod +x MyApp-x86_64.AppImage -
运行它,检查是否能正常工作:
bash
运行
-
./MyApp-x86_64.AppImage
如果一切正常,这个 .AppImage 文件就是你可以分发给其他 Ubuntu 用户的最终产品了。
方法二:手动打包成 .deb 文件 (更符合 Debian/Ubuntu 标准)
.deb 是 Ubuntu 的标准软件包格式,安装和管理都非常方便。手动创建需要你编写一些配置文件,稍显复杂,但能让你更好地控制打包过程。
步骤 1: 创建打包目录结构
首先,我们需要创建一个符合 Debian 规范的目录结构。假设你的项目叫 myapp,版本是 1.0。
bash
运行
mkdir -p myapp-1.0/DEBIAN
mkdir -p myapp-1.0/usr/bin
mkdir -p myapp-1.0/usr/share/applications
mkdir -p myapp-1.0/usr/share/icons/hicolor/64x64/apps
myapp-1.0: 这是打包的根目录。DEBIAN: 存放包的控制信息。usr/bin: 存放你的可执行文件。usr/share/applications: 存放桌面快捷方式(.desktop文件)。usr/share/icons: 存放应用图标。
步骤 2: 填充文件
-
复制可执行文件: 将你在 Release 模式下编译好的
myapp可执行文件复制到myapp-1.0/usr/bin/目录下。bash
运行
-
# 示例 cp ~/QtProjects/build-myapp-...-Release/myapp myapp-1.0/usr/bin/ -
创建桌面快捷方式: 在
myapp-1.0/usr/share/applications/目录下创建一个名为myapp.desktop的文件,并填入以下内容(请根据你的应用修改):ini
-
[Desktop Entry] Name=My Application Comment=A brief description of my application Exec=/usr/bin/myapp Icon=myapp Terminal=false Type=Application Categories=Utility;Development;Exec必须是绝对路径/usr/bin/myapp。Icon是图标文件名(不含路径和扩展名)。
-
复制图标: 将你的应用图标(例如
myapp.png,建议 64x64 像素)复制到myapp-1.0/usr/share/icons/hicolor/64x64/apps/目录下。bash
运行
-
cp ~/path/to/your/icon/myapp.png myapp-1.0/usr/share/icons/hicolor/64x64/apps/
步骤 3: 创建控制文件
在 myapp-1.0/DEBIAN/ 目录下创建一个名为 control 的文件,这是 .deb 包最重要的配置文件。
ini
Package: myapp
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends: libqt5core5a (>= 5.12.0), libqt5gui5 (>= 5.12.0), libqt5widgets5 (>= 5.12.0), libc6 (>= 2.27)
Maintainer: Your Name <your.email@example.com>
Description: A brief description of my application.
A longer description that can span multiple lines.
Just make sure each line after the first is indented.
关键字段说明:
Package: 包名,必须小写,无空格。Version: 版本号。Architecture: 架构,通常是amd64。Depends: 非常重要! 列出你的应用所依赖的库。你需要准确填写 Qt 库和其他系统库的名称和最低版本。你可以使用ldd myapp命令来查看你的可执行文件依赖哪些库。- 例如,运行
ldd myapp | grep Qt可以找到 Qt 相关的依赖。
- 例如,运行
Maintainer: 你的名字和邮箱。Description: 应用描述。
步骤 4: 打包生成 .deb 文件
一切准备就绪后,在终端中,进入 myapp-1.0 目录的上一级目录,然后执行 dpkg-deb 命令。
bash
运行
# 确保你在 myapp-1.0 目录外面
cd ..
dpkg-deb --build myapp-1.0
执行完毕后,你会在当前目录下看到一个 myapp-1.0.deb 文件。这就是你的安装包了。
步骤 5: 测试安装
你可以在自己的机器上测试安装:
bash
运行
sudo dpkg -i myapp-1.0.deb
安装后,你应该能在应用菜单中找到你的程序,或者在终端中直接输入 myapp 来运行它。
如果安装时提示缺少依赖,可以运行 sudo apt-get install -f 来自动修复。
总结与建议
| 特性 | linuxdeployqt (AppImage) | 手动打包 (.deb) |
|---|---|---|
| 易用性 | 非常高,一键生成 | 较低,需要手动配置多个文件 |
| 分发便捷性 | 极高,单个文件,无需安装 | 高,标准格式,可通过软件中心安装 |
| 系统集成度 | 低,不写入系统目录 | 高,完美融入系统(菜单、图标、卸载) |
| 适用场景 | 快速发布、跨发行版测试 | 正式发布到 Ubuntu 软件仓库、提供给终端用户 |
对于大多数 Qt 开发者来说,linuxdeployqt 是首选,因为它能节省大量时间。如果你需要一个非常 “地道” 的 Ubuntu 软件包,或者计划将软件上传到官方仓库,那么就需要花时间学习如何手动创建 .deb 包
1725

被折叠的 条评论
为什么被折叠?



