Qt程序移植到其他电脑上无法运行的解决方法

本文介绍如何使用windeployqt工具解决Qt程序在不同电脑上的运行问题。通过release模式编译源代码后,利用windeployqt自动复制所需的依赖库,确保程序在其他机器上也能正常运行。此外,还提醒开发者注意额外携带程序运行所需的自定义资源文件。

转自:https://blog.youkuaiyun.com/TH_NUM/article/details/78264733

程序写好后的最终目的是交付用户使用。由于各人电脑上的系统环境千差万别,因此,即使是采用了 release 方式编译,在你自己电脑上生成的 Qt 可执行程序换到别人的电脑上,依然可能无法运行。

1.首先,以 release 方式编译源代码,然后将生成的 exe 程序放到一个单独的文件夹exe中。

我是放在 C:\Users\lenovo\Desktop\exe\Group.exe 
这里写图片描述

2.再从开始菜单打开 Qt 命令行工具。 
找到 Qt for Desktop 命令行 
这里写图片描述

3.在命令行中,进入到第一步中 exe 程序所在的文件夹。 
这里写图片描述

4.再使用 Qt 自带的 windeployqt 工具命令,其语法格式为: 
windeployqt 可执行程序名 
说明:windeployqt 命令可以搜索指定程序需要的所有依赖库,并自动将它们复制到该程序所在的目录中来。这里写图片描述

5.执行上述命令之后,再转到 exe 的目录,就可以看到相关的依赖库文件都已经复制好了。 
这里写图片描述

6.在此需要特别提醒大家的是,windeployqt 命令只解决发布 Qt 程序时的依赖库,但并不包括 Qt 程序在运行时需要使用的自定义资源文件(如图片、音乐、文本等)。 
因此,如果你的程序中使用了相关的资源,需要将这些资源文件一起带上。在我这个聊天程序中,由于使用了一些位于 images 目录下的图标资源,所以需要手动将 images 目录下的内容全部复制过来。 
这里写图片描述


### 移植 Qt 程序到 ARM 架构设备 要在 ARM 架构设备上运行原本为 x86 架构编写的 Qt 代码,需要进行一系列步骤来确保程序能够在目标平台上正确编译和运行。 #### 获取 Qt 库 首先,需要获取适用于 ARM 架构的 Qt 库。这通常意味着从源代码构建 Qt 库,因为官方提供的预编译库可能不支持特定的 ARM 设备或配置。可以从 Qt 官方网站下载 Qt 源代码包,例如 `qt-everywhere-opensource-src-4.8.4` 版本,然后根据目标平台的需求进行编译[^1]。 #### 配置交叉编译环境 为了在主机(通常是 x86 架构)上编译出可以在 ARM 架构设备上运行程序,需要设置一个交叉编译工具链。这个工具链包括了针对 ARM 平台的编译器、链接器和其他必要的工具。此外,还需要确保所有依赖库(如 zlib, libpng, libjpeg, libmng)都已为 ARM 架构编译并安装在正确的路径下,以便交叉编译工具能够找到它们[^2]。 #### 编译 Qt 库 使用交叉编译工具链,通过指定 `-embedded arm` 和 `-xplatform qws/linux-arm-g++` 参数来配置 Qt 的构建过程,其中 `-prefix` 参数用于指定安装目录。同时,可以根据需求调整其他参数,比如是否启用某些功能或模块[^3]。 ```bash ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,12,16 -no-qt3support -no-qvfb -qt-mouse-tslib -prefix /home/gu/Qt/output/qt-arm/ -qt-sql-sqlite -I/home/gu/Qt/output/tslib/include -L/home/gu/Qt/output/tslib/lib -no-rpath -no-largefile -no-accessibility ``` 执行完上述命令后,接着运行 `make` 和 `make install` 命令来编译并安装 Qt 库。 #### 编译应用程序 一旦有了适用于 ARM 的 Qt 库,就可以开始编译应用程序了。确保项目的 `.pro` 文件中包含了所有必要的信息,特别是与平台相关的依赖项。使用交叉编译工具链中的 `qmake` 工具生成 Makefile,然后使用交叉编译器编译项目。 #### 测试与调试 最后,在 ARM 设备上部署编译好的应用程序,并对其进行测试以确保其按预期工作。如果遇到任何问题,可能需要返回到配置或编译阶段进行调整。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值