Linux下Qt打包发布
一、使用linuxdeployqt拷贝依赖文件
1. 下载linuxdeployqt
从 GitHub Releases 下载:
1 | # 重命名简化 |
2. 配置Qt环境变量
编辑 ~/.bashrc,添加Qt路径(根据实际安装路径调整):
1 | #add qt env |
使配置生效:
1 | source ~/.bashrc |
注意:最关键的是
PATH环境变量,其他变量可能非必需。
3. 拷贝依赖文件
准备目录结构:
1 | mkdir -p TestSetup/Test |
执行依赖拷贝:
1 | cd TestSetup/Test |
重要提示:
- 确保应用为 Release 版本
linuxdeployqt内部使用ldd,仅能处理隐式加载的.so文件- 对于显式加载的
.so(如dlopen),需手动处理其依赖:
1
2
3 # 示例:若 A.so 显式加载 B.so,而 B.so 隐式依赖 C.so
# 需对 B.so 单独执行:
linuxdeployqt B.so -appimage
4. 验证应用运行
清除Qt环境变量后测试:
1 | # 清除环境变量(仅当前终端) |
二、打包为.deb安装包
1. 目录结构规划
1 | TestSetup/ |
创建目录:
1 | mkdir -p TestSetup/{output,source/{DEBIAN,opt/Test}} |
2. 配置桌面快捷方式
编辑 TestSetup/source/opt/Test/Test.desktop:
1 | [Desktop Entry] |
注意:
- 路径必须是安装后的绝对路径(非打包路径)
- 需赋予执行权限:
chmod +x Test.desktop- 准备图标文件:
Test.png
3. 创建DEBIAN控制文件
control(包元数据)
TestSetup/source/DEBIAN/control:
1 | Package: mytest # 包名(卸载时使用) |
postinst(安装后脚本)
TestSetup/source/DEBIAN/postinst:
1 |
|
postrm(卸载后脚本)
TestSetup/source/DEBIAN/postrm:
1 |
|
脚本要求:
- 首行必须为
#!/bin/sh- 赋予执行权限:
chmod +x DEBIAN/{postinst,postrm}
4. 构建.deb包
1 | cd TestSetup/source |
三、安装与卸载
1. 安装
1 | cd TestSetup/output |
验证效果:
- 桌面出现快捷方式
- 开始菜单 → Other 中出现应用
- 应用文件位于
/opt/Test/
2. 卸载
1 | # 使用control文件中的Package字段值 |
卸载效果:
- 删除
/opt/Test/目录 - 自动移除桌面和开始菜单快捷方式
- (若在
postrm中配置)删除应用日志
关键注意事项
- 依赖完整性:显式加载的
.so需单独处理依赖 - 路径一致性:
.desktop文件中的路径必须匹配安装路径 - 脚本权限:
DEBIAN目录下的脚本必须有执行权限 - 包名唯一性:
control中的Package字段需全局唯一
相关笔记与链接建议
- 当前笔记引用:Linux下Qt打包发布
- 建议补充双向链接:
- [[Qt应用部署最佳实践]] - 跨平台部署策略
- [[Linux软件包管理]] - deb/rpm 包机制对比
- [[CMake构建系统]] - Qt项目自动化构建
- [[AppImage打包指南]] - 替代打包方案
总结
通过 linuxdeployqt + dpkg 组合,可高效生成符合 Linux 发行版规范的安装包,实现依赖自动管理、快捷方式集成和干净卸载。