Ubuntu虚拟机中编译QT5程序生成Windows平台.exe方法咨询
在Ubuntu虚拟机中交叉编译QT5程序生成Windows 64位.exe文件
1. 安装MinGW交叉编译工具链
在Ubuntu终端执行以下命令,安装针对64位Windows的交叉编译工具:
sudo apt update sudo apt install mingw-w64
验证安装结果:
x86_64-w64-mingw32-g++ --version
能正常输出版本信息即为安装成功。
2. 配置QT交叉编译环境
QT需要明确交叉编译工具链的路径,我们通过自定义编译配置文件实现:
- 复制QT默认的Windows编译模板:
cp -r /usr/lib/x86_64-linux-gnu/qt5/mkspecs/win32-g++ ~/qt-win-cross
- 编辑复制后的配置文件
~/qt-win-cross/qmake.conf,将所有编译器命令前缀替换为x86_64-w64-mingw32-,修改后关键内容如下:
QMAKE_CC = x86_64-w64-mingw32-gcc QMAKE_CXX = x86_64-w64-mingw32-g++ QMAKE_LINK = x86_64-w64-mingw32-g++ QMAKE_LINK_SHLIB = x86_64-w64-mingw32-g++ QMAKE_AR = x86_64-w64-mingw32-ar cqs QMAKE_OBJCOPY = x86_64-w64-mingw32-objcopy QMAKE_STRIP = x86_64-w64-mingw32-strip
3. 生成Makefile并编译项目
进入你的QT项目根目录,执行以下命令生成Windows目标的Makefile:
qmake -spec ~/qt-win-cross
启动编译:
make
编译完成后,项目目录下会生成后缀为.exe的可执行文件。
4. 打包依赖文件(关键步骤)
生成的.exe无法直接在Windows运行,需配套依赖库:
- 查看程序依赖的DLL:
x86_64-w64-mingw32-objdump -x your_app.exe | grep DLL
- 从系统路径中找到这些DLL并复制到.exe同目录:
- QT核心库:比如
Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll(根据项目用到的模块而定),一般位于/usr/lib/x86_64-linux-gnu/qt5/plugins/ - MinGW运行库:
libgcc_s_seh-1.dll、libstdc++-6.dll、libwinpthread-1.dll,位于/usr/x86_64-w64-mingw32/lib/
- QT核心库:比如
- 额外需要QT的平台插件:复制
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/qwindows.dll到.exe同目录的platforms文件夹(需手动创建该文件夹)
将.exe和所有依赖文件打包后,即可在Windows系统上运行。
内容的提问来源于stack exchange,提问作者DamienDne
相关产品推荐
相关产品推荐

