在Ubuntu上打包Qt工程,并实现其安装和使用。

系统环境:Ubuntu18.04

Qt版本:5.9.4

工程源码:https://github.com/seer-robotics/SeerTCPTest

操作步骤:

1、用Qt的release模式编译工程文件(SeerTCPTest,即SeerTools,下文统称为SeerTools)。

可点击Qt界面上左侧的【项目】-->【构建设置】-->【概要】-->【构建目录】-->【浏览】找到对应的路径和文件。

我这边编译出来是共享库,不是可执行文件,如下图所示。

 

2、用脚本执行编译好的文件。

2.1 创建如下所示的目录结构,在整理以来库的时候还需要做部分添加。


demo
    project
        DEBIAN    // 存放control文件,用于记录安装包相关信息的配置文件  
        usr
            local
                lib
                SeerTools        // 存放程序文件
            share
                applications    // 存放 *.desktop 文件
                icons            // 存放软件的图标 *.png

2.2 把编译好的SeerTools文件和需要的数据库文件Roboshop.db复制到SeerTools目录下。

2.3 在SeerTools目录下创建脚本文件SeerTools.sh,指令如下:

然后在文件夹下双击此文件,并写入如下内容:

#!/bin/sh 
appname=`basename $0 | sed s,\.sh$,,` 
dirname=`dirname $0` 
tmp="${dirname#?}" 
if [ "${dirname%$tmp}" != "/" ]; then 
dirname=$PWD/$dirname 
fi 

LD_LIBRARY_PATH=$dirname 
export LD_LIBRARY_PATH 
$dirname/$appname "$@"

2.4 修改SeerTools.sh的文件属性为可执行文件,在SeerTools.sh所在的目录下,输入如下指令:

### 使用 Ubuntu AppImage 打包 Qt 程序 #### 一、概述 在 Ubuntu使用 `linuxdeployqt` 工具可以轻松创建支持跨平台分发的 AppImage 文件。AppImage 是一种独立于发行版的应用程序封装格式,允许用户无需安装即可运行应用程序。 --- #### 二、准备工作 1. **安装依赖工具** 需要先安装必要的开发工具库来构建 AppImage。 ```bash sudo apt update && sudo apt install -y curl gcc make g++ pkg-config desktop-file-utils libfuse2 fuse ``` 2. **下载编译 `linuxdeployqt`** 下载最新版本的 `linuxdeployqt` 将其放置到 PATH 中以便全局调用。 ```bash wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod a+x linuxdeployqt-*.AppImage mv linuxdeployqt-*.AppImage /usr/local/bin/linuxdeployqt ``` 3. **设置 Qt 环境变量** 如果未正确配置 Qt 路径,则可能会遇到类似于 `qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake'` 的错误[^1]。可以通过修改 `/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf` 来解决此问题。 修改后的默认配置应指向实际使用Qt 版本路径: ``` /home/<用户名>/Qt<版本号>/<架构>/bin /home/<用户名>/Qt<版本号>/ ``` --- #### 三、具体操作流程 ##### 1. 编写项目源码 确保已有一个完整的 Qt 应用程序工程文件(`.pro`),通过以下方式完成项目的初始构建: ```bash cd <project_directory> qmake make ``` ##### 2. 创建应用目录结构 将生成的可执行文件复制到目标工作目录中,准备其他资源文件(如图标、翻译文件等)。 ```bash mkdir appdir cp bioreactor appdir/bioreactor cp -r ../resources/* appdir/ ``` ##### 3. 运行 `linuxdeployqt` 通过以下命令生成 AppImage 文件: ```bash linuxdeployqt appdir/bioreactor -bundle-non-qt-libs -appimage ``` 其中 `-bundle-non-qt-libs` 参数用于捆绑非 Qt 动态链接库;而 `-appimage` 则指示最终输出为 AppImage 格式。 注意:如果仍然报错关于找不到合适 qmake 或者无法解析 Qt 路径的信息,请确认当前 shell 是否加载了正确的 Qt 开发环境以及是否具有足够的权限访问这些组件。 --- #### 四、常见问题排查 - 若出现类似 `"ERROR: "/usr/bin/qmake -query"` 错误时,需验证 qtchooser 设置无误; - 对某些特定插件可能还需要额外手动添加其对应的 so 文件至相应子目录下。 --- ### 示例代码片段 以下是简单的 Shell 脚本来自动化整个过程: ```bash #!/bin/bash # 定义变量 PROJECT_DIR=$(pwd) APP_NAME="bioreactor" OUTPUT_FILE="${APP_NAME}.AppImage" # 构建步骤 echo "Building project..." qmake ${PROJECT_DIR}/${APP_NAME}.pro make clean; make all # 准备 AppDir 结构 rm -rf ./appdir mkdir -p ./appdir/usr/bin cp ./${APP_NAME} ./appdir/ # 调用 LinuxDeployQT 工具处理依赖关系 ./linuxdeployqt ./appdir/${APP_NAME} \ -bundle-non-qt-libs \ -qmldir=${PROJECT_DIR}/qml \ -no-translations \ -desktopfile=./${APP_NAME}.desktop \ -iconfile=./icons/${APP_NAME}.png \ -appimage mv *.AppImage . chmod +x "${OUTPUT_FILE}" ls -lh "${OUTPUT_FILE}" exit 0 ``` --- #### 总结 以上方法展示了如何利用 `linuxdeployqt` 实现基于 UbuntuQt 应用程序向 AppImage 的转换。遵循上述指南能够有效减少部署过程中常见的兼容性依赖管理难题。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值