Ubuntu18.04 程序打包发布 linuxdeployqt

本文介绍了如何在Ubuntu上安装patchelf和cmake,以及详细步骤来设置Qt5.9.9的环境变量,确保能够顺利运行Qt应用程序。

1. 安装patchelf

在Ubuntu上使用命令:

sudo apt install patchelf

2. 安装cmake

在Ubuntu上使用命令:

sudo apt install cmake

 

3. 修改.bashrc环境变量

sudo vim ~/.bashrc

在文件末尾追加以下内容,其中/opt/Qt5.9.9/5.9.9是我的Qt安装路径,大家要用自己的路径代替:

export PATH=/opt/Qt5.9.9/5.9.9/gcc_64/bin:$PATH

export LD_LIBRARY_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/lib:$LD_LIBRARY_PATH

export QT_PLUGIN_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/plugins:$QT_PLUGIN_PATH

export QML2_IMPORT_PATH=/opt/Qt5.9.9/5.9.9/gcc_64/qml:$QML2_IMPORT_PATH

接着按下esc键,输入:wq保存退出

source ~/.bashrc



 

<think>我们正在讨论的是在Ubuntu系统下打包Qt应用程序。根据引用[1]和引用[2]的内容,我们可以使用linuxdeployqt工具来打包。下面将详细说明步骤。 ### 步骤一:下载linuxdeployqt 1. 访问[linuxdeployqt的GitHub发布页面](https://github.com/probonopd/linuxdeployqt/releases),下载适用于x86_64架构的AppImage文件(如`linuxdeployqt-continuous-x86_64.AppImage`)[^1]。 2. 将下载的文件重命名为`linuxdeployqt`(可选,但方便使用)并赋予可执行权限: ```bash chmod +x linuxdeployqt-continuous-x86_64.AppImage ``` ### 步骤二:准备打包环境 根据引用[2],我们还需要下载Appimagetool。注意,如果目标系统是aarch64(ARM64),则需要下载对应的AppImage。但通常我们使用x86_64,所以这里以x86_64为例: 1. 下载Appimagetool(可选,因为linuxdeployqt可能会自动处理,但有时需要): - 访问[AppImage的GitHub发布页面](https://github.com/AppImage/AppImageKit/releases),下载`appimagetool-x86_64.AppImage`。 2. 同样赋予可执行权限: ```bash chmod +x appimagetool-x86_64.AppImage ``` ### 步骤三:编译linuxdeployqt(可选) 引用[2]提到编译linuxdeployqt,但通常我们直接使用下载的AppImage。如果下载的AppImage无法运行,可能需要编译。这里我们假设直接使用下载的AppImage。 ### 步骤四:安装依赖 linuxdeployqt需要一些依赖,如`patchelf`(用于修改ELF文件): ```bash sudo apt update sudo apt install patchelf ``` ### 步骤五:打包Qt程序 1. 假设你已经构建好了Qt程序,并生成了一个可执行文件(例如`myapp`)。 2. 创建一个目录(例如`appDir`)来存放打包所需的文件: ```bash mkdir -p appDir/usr/bin mkdir -p appDir/usr/lib mkdir -p appDir/usr/share/applications mkdir -p appDir/usr/share/icons ``` 3. 将可执行文件复制到`appDir/usr/bin`中。 4. 创建一个桌面文件(例如`myapp.desktop`)并放入`appDir/usr/share/applications`。示例内容如下: ``` [Desktop Entry] Type=Application Name=MyApp Exec=myapp Icon=myapp-icon Categories=Utility; ``` 5. 将图标(例如`myapp-icon.png`)放入`appDir/usr/share/icons`。 6. 使用linuxdeployqt打包: ```bash ./linuxdeployqt-continuous-x86_64.AppImage appDir/usr/share/applications/myapp.desktop -appimage ``` 这条命令会自动将Qt库和依赖复制到`appDir`中,并生成一个AppImage文件。 ### 重要提示 - 确保在运行linuxdeployqt之前,你的程序在开发环境中可以正常运行。 - 如果程序使用了额外的库(非Qt),可能需要手动将它们复制到`appDir/usr/lib`中,或者通过修改环境变量(如`LD_LIBRARY_PATH`)来指定库的路径。 ### 测试生成的AppImage 打包完成后,会生成一个名为`MyApp-x86_64.AppImage`的文件(具体名字可能不同)。运行它: ```bash ./MyApp-x86_64.AppImage ``` ### 其他方法 除了使用linuxdeployqt,还可以考虑使用[`linuxdeploy`](https://github.com/linuxdeploy/linuxdeploy)和[`linuxdeploy-plugin-qt`](https://github.com/linuxdeploy/linuxdeploy-plugin-qt)组合,但步骤类似。 ### 总结 以上步骤是在Ubuntu打包Qt程序为AppImage的常用方法。AppImage格式的优点是无需安装,直接运行,且包含所有依赖。 §§相关问题§§ 1. 如何为打包Qt应用程序创建桌面快捷方式? 2. 如何解决打包Qt应用程序依赖的库缺失问题? 3. 如何将打包后的Qt应用程序发布Ubuntu软件中心?</think>### Ubuntu 系统下打包 Qt 应用程序的完整指南 在 Ubuntu打包 Qt 应用程序主要使用 **linuxdeployqt** 工具,它将程序及其依赖项打包成独立的 AppImage 文件。以下是详细步骤: --- #### 一、安装依赖工具 1. **安装编译工具** ```bash sudo apt update sudo apt install build-essential patchelf ``` 2. **下载 linuxdeployqt** [^1][^2] ```bash wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod +x linuxdeployqt-continuous-x86_64.AppImage sudo mv linuxdeployqt-continuous-x86_64.AppImage /usr/local/bin/linuxdeployqt ``` 3. **下载 AppImageTool**(可选,用于最终打包)[^2] ```bash wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod +x appimagetool-x86_64.AppImage ``` --- #### 二、准备 Qt 程序 1. **编译 Release 版本** ```bash cd /path/to/your/qt-project mkdir build && cd build qmake .. && make -j$(nproc) ``` 2. **创建打包目录** ```bash mkdir AppDir && cd AppDir mkdir -p usr/bin usr/lib usr/share/icons cp /path/to/your/project-release-binary usr/bin/ ``` 3. **添加桌面文件**(如 `myapp.desktop`) ```ini [Desktop Entry] Name=MyApp Exec=myapp-binary Icon=myapp-icon Type=Application Categories=Utility; ``` --- #### 三、执行打包命令 ```bash linuxdeployqt usr/share/applications/myapp.desktop -appimage ``` > **关键参数说明**: > - `-appimage`:生成 AppImage 文件 > - `-qmake=<path>`:指定自定义 qmake 路径(若需特定 Qt 版本) > - `-verbose=2`:显示详细日志 --- #### 四、验证与测试 1. **检查生成的文件** 成功后会在当前目录生成 `*.AppImage` 文件 ```bash ls -lh *.AppImage # 查看文件大小(通常100MB+) ``` 2. **测试运行** ```bash ./MyApp-x86_64.AppImage # 直接运行测试 ``` --- #### 五、常见问题解决 1. **依赖库缺失错误** ```bash export LD_LIBRARY_PATH=/path/to/qt/libs:$LD_LIBRARY_PATH linuxdeployqt ... # 重新运行 ``` 2. **图标未加载** - 确保 `.desktop` 文件中 `Icon=` 对应的 PNG 文件在 `usr/share/icons` 目录 - 推荐尺寸:`256x256` 或 `512x512` 3. **GLIBC 版本冲突** 在 **旧版 Ubuntu** 中编译程序(如 Ubuntu 18.04),确保兼容性 --- ### 打包结果说明 生成的 `AppImage` 文件: - ✅ 无需安装,双击即可运行 - ✅ 包含所有 Qt 依赖库(`libQt5Core.so` 等) - ✅ 跨发行版兼容(支持 Ubuntu/Debian/Fedora 等) > 示例目录结构: > ``` > AppDir/ > ├── usr/bin/myapp-binary > ├── usr/lib/ # 自动填充的Qt库 > ├── usr/share/icons/myapp-icon.png > └── usr/share/applications/myapp.desktop > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值