在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 上开发的 Qt 工程导出为 Windows 上可运行的 `.exe` 文件,**不能直接“复制过去”使用**,因为: - 不同操作系统(Linux vs Windows)的可执行文件格式不同(ELF vs PE) - 编译器不同(GCC on Linux vs MSVC/MinGW on Windows) - 动态库链接方式、路径分隔符、换行符等都有差异 --- ## ✅ 正确做法:在 **Windows 环境下重新编译** 你必须在 **Windows 上安装 Qt 开发环境**,然后把源代码复制过去,**用 Windows 的 Qt 编译器重新构建项目**,生成 `.exe`。 --- ### 🛠️ 完整步骤:从 Ubuntu 源码到 Windows 可执行 exe --- ### 🔹 第一步:整理你的 Qt 项目源码(Ubuntu 上操作) 确保项目结构清晰,包含以下内容: ```bash myproject/ ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── myproject.pro # 重要!这是 Qt Creator 的项目文件 ├── resources.qrc # 如果用了资源文件 └── other_headers_and_sources/ ``` > ⚠️ 不要包含任何平台特定代码(如 `system("ls")` 或硬编码 `/home/user` 路径) #### 推荐使用相对路径跨平台 API: ```cpp QDir::currentPath() + "/config.txt" // ✅ 好 "/home/user/project/config.txt" // ❌ 不要在 Windows 上崩溃 ``` --- ### 🔹 第二步:将源码复制到 Windows 电脑 你可以通过以下方式传输: - U盘 / 移动硬盘 - Git 仓库(推荐):`git push` 到 GitHub/Gitee,再在 Windows 上 `git clone` - 压缩包上传网盘 --- ### 🔹 第三步:在 Windows 上安装 Qt 开发环境 #### 方式一(推荐):安装 [Qt Online Installer](https://www.qt.io/download) 1. 下载运行 Qt Online Installer 2. 安装时选择组件: - **MinGW 64-bit**(适合大多数用户,无需 VS) - 或 **MSVC 2019/2022 64-bit**(如果你装了 Visual Studio) 3. 安装 Qt 版本(建议与 Ubuntu 上一致,如 Qt 5.15.2 或 Qt 6.8) 4. 安装 Qt Creator #### 示例组件选择: ``` Qt ├── Qt 5.15.2 │ ├── MinGW 11.2.0 64-bit ← 用于编译 Windows exe │ └── Qt Creator 10.0.2 └── Tools └── MinGW ``` --- ### 🔹 第四步:在 Windows 上打开项目编译 1. 打开 Qt Creator 2. 选择 “Open Project”,导入你的 `myproject.pro` 3. 构建套件(Kit)选择: - Desktop Qt 5.15.2 MinGW 64-bit ✅ 4. 点击左下角 “🔧 Configure Project” 5. 点击绿色三角 ▶️ “Build” → 生成 `.exe` 生成的可执行文件位于: ``` build-myproject-Desktop_Qt_5_15_2_MinGW_64_bit-Release/release/myproject.exe ``` --- ### 🔹 第五步:打包发布(带上依赖库) `.exe` 单独无法运行,需要 Qt 的动态库支持。 #### 使用 `windeployqt` 自动部署(超级方便!) 打开 Qt 的命令行工具(开始菜单 → QtQt Command Prompt) 进入输出目录运行: ```cmd cd /d D:\build-myproject-Desktop_Qt_5_15_2_MinGW_64_bit-Release\release windeployqt myproject.exe ``` ✅ 效果:自动复制所有需要的 `.dll`、平台插件、image formats 等到当前目录。 你现在可以得到一个完整文件夹,包含: ``` myproject.exe Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll platforms/qwindows.dll imageformats/qjpeg.dll ... ``` 把这个整个文件夹打包成 ZIP,就可以发给别人在 Windows 上运行! --- ## ✅ 补充说明 | 问题 | 解决方案 | |------|----------| | 不能在 Linux 上直接生成 Windows exe? | ❌ 不行,除非使用交叉编译(复杂,不推荐新手) | | 如何避免手动复制 DLL? | 使用 `windeployqt` 是标准做法 | | 用户没有 VC++ 运行库怎么办? | MinGW 版本不需要;MSVC 需要安装 [Microsoft Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe) | --- ## 🧩 高级选项:交叉编译(仅限高级用户) 理论上可以在 Linux 上用 **MinGW-w64 交叉编译器**生成 Windows exe,但配置复杂: ```bash sudo apt install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 ``` 然后配置 Qt 添加新的 Kit,指定 `.pro` 文件中的编译器。 ⚠️ 不推荐初学者尝试,容易出错。 --- ## ✅ 总结流程图 ``` Ubuntu 源码 ↓ Git / 压缩包 复制 ↓ Windows + Qt (MinGW) ↓ Qt Creator 打开 .pro ↓ Build → 生成 .exe ↓ windeployqt myproject.exe ↓ 得到完整可运行文件夹 ↓ 分发给其他 Windows 用户 ✅ ``` --- ##
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值