在 Ubuntu 20.04 上交叉编译 Qt 5 应用,使其可在 Windows 运行

Qt5.14.2-windows平台配置Qt Creator的ARM体系结构Linux交叉编译器 交叉编译ARM架构Qt程序工程 阅读详情
AI摘要

本文介绍在 Ubuntu 20.04 上交叉编译 Qt 5 应用,使其可在 Windows 运行的方法。先准备交叉编译环境,安装基本依赖和 MinGW 工具链;再编译 Qt 5 交叉编译版本;接着用交叉编译工具编译项目;之后将文件复制到 Windows 运行;最后打包发布应用,避免在 Windows 开发的繁琐。

引言

Qt 作为一个跨平台的 GUI 框架,支持在 Linux、Windows、macOS 等多个操作系统上运行。然而,如果你的开发环境是 Ubuntu 20.04,但最终的应用需要运行在 Windows 上,那么你需要使用 交叉编译 来生成可在 Windows 上运行的 exe 文件。

本文将详细介绍如何在 Ubuntu 20.04 上 交叉编译 Qt 5 应用程序,并生成可以直接在 Windows 上运行的 .exe 文件。

在这里插入图片描述


一、准备交叉编译环境

1. 安装基本依赖

首先,确保你的 Ubuntu 20.04 系统已经安装了 Qt 5。

sudo apt update
sudo apt install qt5-default qtcreator qtbase5-dev

2. 安装 MinGW 交叉编译工具链

为了编译 Windows 可执行文件(.exe),我们需要 MinGW 交叉编译工具:

sudo apt install mingw-w64

安装完成后,检查 MinGW 是否可用:

i686-w64-mingw32-gcc --version  # 32 位
x86_64-w64-mingw32-gcc --version  # 64 位

如果命令能够正确输出版本号,则 MinGW 交叉编译器安装成功。


二、编译 Qt 5 交叉编译版本

Qt 需要与交叉编译工具链匹配,默认的 Qt 版本是针对 Linux 运行的,因此我们需要编译一个 Windows 版本的 Qt 5。

1. 下载 Qt 5 源码

首先,获取 Qt 5 源代码(建议使用 Qt 5.15.2):

mkdir -p ~/qt5-win64-cross && cd ~/qt5-win64-cross
git clone --branch 5.15.2 --depth 1 https://github.com/qt/qt5.git
cd qt5
perl init-repository --module-subset=qtbase,qttools,qtdeclarative,qtsvg,qtx11extras

2. 配置 Qt 交叉编译环境

使用 configure 命令配置 Windows 交叉编译环境:

mkdir build-win64 && cd build-win64
../configure \  
    -prefix $HOME/qt5-win64-cross \  
    -xplatform win32-g++ \  
    -release \  
    -static \  
    -opensource \  
    -confirm-license \  
    -nomake tests \  
    -nomake examples \  
    -opengl desktop \  
    -device-option CROSS_COMPILE=x86_64-w64-mingw32-

3. 编译并安装 Qt 5

执行编译和安装:

make -j$(nproc)
sudo make install

安装完成后,你的 Qt 交叉编译环境就准备好了!


三、使用交叉编译工具编译 Qt 5 项目

1. 设置 Qt 交叉编译工具链

在 qtcreator 中,添加一个新的 Qt Kit,指定交叉编译器路径。

  • 编译器(C++): /usr/bin/x86_64-w64-mingw32-g++
  • 编译器(C): /usr/bin/x86_64-w64-mingw32-gcc
  • Qt 版本: 选择 ~/qt5-win64-cross
  • CMake 生成工具: Ninja 或 Make

2. 使用 CMake 进行交叉编译

如果你的 Qt 项目使用 CMake,可以创建 CMakeLists.txt 并交叉编译:

cmake_minimum_required(VERSION 3.10)
project(MyQtApp)

set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(QT5_DIR ~/qt5-win64-cross)

find_package(Qt5 COMPONENTS Widgets REQUIRED)

add_executable(myapp main.cpp)
target_link_libraries(myapp Qt5::Widgets)

然后,运行:

mkdir build-win64 && cd build-win64
cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw.cmake
make -j$(nproc)

这将生成一个 Windows 可执行文件 myapp.exe。


四、将 exe 复制到 Windows 并运行

1. 复制 exe 文件到 Windows

你可以使用 scp 命令或 USB 设备将 myapp.exe 传输到 Windows 计算机:

scp myapp.exe user@windows-ip:/C/Users/user/Desktop/

2. 运行 exe 文件

在 Windows 上双击 myapp.exe,如果 Qt 依赖项正确,程序应能运行。

如果程序报错 “缺少 DLL”,你需要将 Qt 的动态库文件(如 Qt5Core.dll, Qt5Widgets.dll)复制到 exe 所在目录,或者使用 windeployqt 进行打包:

windeployqt myapp.exe

五、打包和发布 Windows 版 Qt 应用

1. 生成独立的 Windows 可执行文件

如果你希望在没有安装 Qt 的 Windows 电脑上运行 exe 文件,你可以使用 windeployqt 来收集所有必要的 DLL 文件。

在 Windows 机器上,运行:

C:\Qt\5.15.2\mingw81_64\bin\windeployqt.exe myapp.exe

这将把所有 Qt 依赖项复制到 exe 目录,使其成为独立应用。

2. 创建安装包

可以使用 NSIS 或 Inno Setup 创建 Windows 安装包,以便用户轻松安装你的应用。

示例 NSIS 脚本:

Outfile "MyQtAppInstaller.exe"
InstallDir "$PROGRAMFILES\MyQtApp"
Section "Install"
    SetOutPath "$INSTDIR"
    File "myapp.exe"
    File "Qt5Core.dll"
    File "Qt5Widgets.dll"
SectionEnd

总结

通过本文的方法,你可以在 Ubuntu 20.04 上交叉编译 Qt 5,生成可在 Windows 上运行的 .exe 文件。

关键步骤包括:

  1. 安装 MinGW 交叉编译工具链。
  2. 配置 Qt 5 交叉编译环境。
  3. 使用 cmake 或 qmake 进行编译。
  4. 传输 exe 到 Windows 并运行。
  5. 使用 windeployqt 打包所有依赖,使 exe 能在 Windows 上独立运行。

按照本指南,你可以高效地在 Linux 上构建 Windows 版 Qt 应用,避免在 Windows 上开发的繁琐流程!

Qt5.14.2-Linux平台配置Qt Creator的ARM体系结构Linux交叉编译器 阅读详情

相关推荐

QGroundControl v5.0 源码编译实战:Ubuntu 22.04 生成 AppImage 与 NSIS 安装包

本文详细介绍了在Ubuntu 22.04环境下编译QGroundControl v5.0源码并生成AppImage(Linux)和NSIS(Windows)安装包的完整流程。涵盖环境配置、依赖安装、编译参数调整、常见问题解决等实战细节,帮助无人机开发者和高级用户快速掌握跨平台安装包生成技术。

mxdxm8899的专栏 710

Linux下 Qt-5.14.2 交叉编译

Qt-5.14.2 交叉编译

jin787730090的博客 7090

RK3588开发板Qt交叉编译环境搭建实战指南

本文详细介绍了在RK3588开发板上搭建Qt交叉编译环境的完整实战流程。从Ubuntu虚拟机准备、安装系统依赖,到获取ARM64交叉编译工具链和Qt 5.14.2源码,逐步指导完成配置、编译与安装。重点解析了关键配置参数、常见错误排查及模块单独编译方法,最终实现在x86主机上为RK3588 ARM架构编译可运行的Qt应用程序,显著提升嵌入式GUI开发效率。

weixin_29291863的博客 300

QT5交叉编译保姆级教程(arm64、mips64)

什么是交叉编译?简单说,就是在当前系统平台上,开发编译运行于其它平台的程序。比如本文硬件环境是x86平台,但是编译出来的程序是在arm64架构、mips64等架构上运行本文使用的操作系统:统信UOS家庭版22.0#安装python环境(如果你的程序中不需要调用python,可以不装)#安装aarch64(arm64)编译链工具。国产CPU,如飞腾、华为麒麟等都是这个架构#安装mips64el编译链工具。龙芯3A3000、3A4000等是此架构。龙芯最新的LoongArch架构似乎还没有编译链工具。

skyyx2002的博客 2万+

在Rockchip RV1126上跑起第一个QT应用:从Windows开发到WSL2交叉编译的完整避坑记录

本文详细介绍了在Rockchip RV1126开发板上构建QT应用的全流程,包括Windows环境下的QT Creator开发、WSL2交叉编译环境搭建以及RV1126上的部署优化。重点解析了开发过程中常见的坑与解决方案,帮助开发者高效完成嵌入式QT应用的移植与调试。

weixin_30607659的博客 386

RK3506嵌入式Qt交叉编译环境搭建避坑指南

交叉编译是嵌入式Linux开发的核心技术,用于在x86宿主机上生成ARM平台可执行程序,其原理是通过专用工具链实现指令集与系统调用的跨平台转换。在瑞芯微RK3506等异构芯片上,Qt作为嵌入式GUI事实标准,其环境搭建涉及工具链选型、源码编译与部署调试,技术门槛较高。典型应用场景包括HMI人机界面、工业网关和串口屏替代方案。针对Ubuntu22.04宿主机,从工具链配置到Qt模块裁剪,每一步都需规避常见陷阱。本文基于RK3506平台,系统梳理Qt交叉编译的完整流程与实战避坑经验,帮助开发者高效完成环境部署。

weixin_34409357的博客 493

在Ubuntu20.04上交叉编译能在Windows上运行的Qt5应用

在Ubuntu20.04上交叉编译能在Windows上运行的Qt5应用

daqinzl的专栏 755

Ubuntu 20.04下Qt5.12.12交叉编译与eglfs部署

交叉编译是在一种架构上生成另一种架构可执行文件的基础技术,核心在于工具链、sysroot与目标ABI保持一致,否则会出现Exec format error或动态库加载失败。对嵌入式Linux而言,ARM64/AArch64平台常需用aarch64-linux-gnu工具链重建Qt等运行时,才能让上位机、HMI面板在目标板稳定运行。Qt5.12.12因moc/uic版本敏感,需在Ubuntu 20.04上对齐编译器、QPA插件与eglfs显示后端,并配置Qt Creator交叉Kits与GDB调试。围绕该链路

weixin_34013044的博客 328

Ubuntu 20.04下aarch64静态交叉编译Qt 5.14.2全指南

静态交叉编译是嵌入式Linux环境下部署Qt应用的核心技术,其本质是将Qt库、C++运行时(如libstdc++.so.6)、系统依赖(如libpthread.a)全部链接进单一可执行文件,彻底规避目标板动态库缺失、ABI不兼容等典型问题。该技术广泛应用于ARM64架构的工业HMI、边缘网关与车载终端开发,尤其适配Rockchip、i.MX8等无包管理器的精简系统。其关键价值在于实现‘拷贝即运行’的零依赖部署,支撑qt打包成可执行程序、qt发布软件等工程刚需。本文聚焦Ubuntu-20.04安装qt交叉编译

weixin_34198762的博客 322

ZYNQ Qt环境移植(正点和黑金的,两份)

正点和黑金的关于Qt和opencv在zynq-7000平台移植的文档,嫌自己找麻烦的不防用我这个

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

保姆级教程:在Ubuntu 20.04上为全志H5开发板交叉编译Qt5.12.11(含完整配置脚本)

本文提供在Ubuntu 20.04上为全志H5开发板交叉编译Qt5.12.11的完整指南,涵盖环境配置、工具链设置、源码定制、自动化脚本开发及部署实战。通过详细步骤和问题排查技巧,帮助开发者高效完成ARM Cortex-A53架构的Qt移植,适用于嵌入式应用开发。

weixin_30325487的博客 405

飞牛fnOS安装1Panel后Docker容器消失?三步教你恢复数据并避免踩坑

本文详细解析了飞牛fnOS安装1Panel后Docker容器消失的问题,指出这是由于daemon.json文件被覆盖导致。通过SSH连接、修复配置文件和系统重启三个步骤,用户可以轻松恢复数据。文章还提供了预防措施和最佳实践,帮助用户避免类似问题。

yellow的专栏 868

保姆级教程:在Ubuntu 20.04上为全志H5开发板交叉编译Qt5.12.11(附完整配置脚本)

本文提供全志H5开发板Qt5.12.11交叉编译的保姆级教程,详细讲解从环境准备到编译优化的全过程。针对ARM_aarch64架构的CortexA53芯片进行特别优化,包含完整配置脚本和常见问题解决方案,帮助开发者快速搭建嵌入式Qt开发环境。

weixin_30740295的博客 384

基于FPGA的cy7c68013a双向通信实验

基于FPGA的cy7c68013a双向通信实验     本实验是基于FPGA的cy7c68013a的USB双向通信实验,以前折腾过一段时间cy7c68013a,没有入门时感觉好难,入门了就会感觉很简单。本教程主要内容:     1.cy7c68013a的固件编写,以及生成iic固件和下载固件。     2.cy7c68013a的slave模式,以及他的读写时序     3.cy7c6801...

乘风的博客 3万+

ONFI5.0命令字实战指南:从基础操作到高级应用

本文深入解析ONFI5.0协议的核心——命令字,提供从基础操作到高级应用的实战指南。详细拆解了NAND闪存的复位、读状态、数据读取(00-30)、页编程(80-10)和块擦除(60-D0)等关键命令周期,并探讨了多平面操作与缓存操作等高级性能优化技巧,帮助开发者高效、稳定地与NAND芯片进行底层交互。

vscode5coder的博客 462

Ubuntu虚拟机开发rk3399平台qt5应用程序环境傻瓜式搭建流程

本教程的主要目的是实现在windows上面利用虚拟机开发基于arm架构的rk3399平台的ubuntu系统qt应用

weiyanbi8673的博客 3956

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 416

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

亦已焉哉 4330

卡尔曼滤波算法-Kalman Filter Algorithm

Kalman滤波是一种递归过程,主要有两个更新过程:时间更新和观测更新,其中时间更新主要包括状态预测和协方差预测,主要是对系统的预测,而观测更新主要包括计算卡尔曼增益、状态更新和协方差更新,因此整个递归过程主要包括五个方面的计算:1)状态预测;2)协方差预测;3)卡尔曼增益;4)状态更新;5)协方差更新; 用数学公式表示,如下: 状态预测:(1) 其中,X(k|k)是k时...

sunlin972913894的博客 2万+

Python全栈入门到实战【进阶篇 1】类与对象:面向对象编程的基石

Python中定义类使用**class关键字**,创建对象使用**类名()**(类似调用函数),语法简洁,我们从最基础的空类开始,逐步拆解。class# 定义空的学生类,pass表示占位,无实际内容 class Student : pass编码规范:类名遵循大驼峰命名法(每个单词首字母大写,无下划线),如StudentCarPhone,这是Python官方推荐的PEP8规范,便于区分类和其他标识符。实例方法必须定义在类内部;实例方法的第一个参数必须是self(名称可自定义,如this。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 3403

QT creator 3.4.1配置arm交叉编译环境(QT5.4.2)

QT creator 3.4.1配置arm交叉编译环境(QT5.4.2) 本人基于Ubuntu 14.04 LTS版本安装的,费话好说,直接进入主题。 1 安装Qt Creator 3.4.1 这里没有什么好说的,到QT官网下载,并且安装。以下是本人的安装版本。 2 配置交叉编译环境 2.1 安装好交叉编译链的工具并且配置好环境变量。网上很多资料,需要注意的是,别忘记了sou

ye888的专栏 1414

基于FMU的Star CCM+与Amesim复杂控制联合分析

基于FMU的Star CCM+与Amesim复杂控制联合分析

2201_75375391的博客 2016

Ubuntu 18.04下Qt 5.12嵌入式开发环境配置指南

嵌入式Linux开发中,Qt框架因其跨平台特性和丰富的UI组件被广泛应用。Ubuntu LTS版本以其稳定的软件源和长期支持成为理想的开发平台,特别是Ubuntu 18.04与Qt5.12的组合,在工具链兼容性和社区支持方面表现突出。通过配置交叉编译工具链和优化Qt Creator环境,开发者可以高效构建嵌入式应用。本文详细介绍从系统配置、Qt安装到输入法集成的全流程,特别针对ARM架构设备提供远程调试方案,并分享内存优化等实战技巧,帮助开发者在资源受限的嵌入式设备上实现流畅的Qt应用运行。

weixin_30700099的博客 353

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 在 Windows 上最快速安装 Qt 5
下一篇: 在 Ubuntu 20.04 上交叉编译 Qt 5 应用,使其可在 Windows 运行
嵌入式孙老师
博客等级 码龄7年 5686粉丝 898原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值