Linux下用Qt Creator交叉编译静态Qt6 Windows程序的问题求助
Qt交叉编译问题(Linux→Windows)
问题描述
我对在Linux主机上使用Qt Creator和qmake编译Windows二进制文件的方法存在较大误解。我在服务器上搭建了Debian 11虚拟机,用于编译原本为Linux编写的工具;现在需要将这些程序移植到Windows,但无法使用Windows虚拟机。另外一项核心需求是静态链接,这要求我自定义编译Qt6。
我可以顺利为Linux编译Qt 6.2.4(含qmake),并在Qt Creator 8中用它编译Linux版工具。现在需要通过mingw-w64交叉编译器生成Windows二进制文件,我原本以为要专门构建一个适配的qmake版本,但用交叉编译器编译qmake后,得到的是Windows格式的二进制文件/usr/local/qt6-win32/bin/qmake.exe,显然无法在Linux版Qt Creator中使用——这就是我在Qt交叉编译中遇到的核心问题。
已执行操作步骤
# 安装依赖: $ apt build-dep qtbase5-dev $ apt install libgl1-mesa-dev git cmake/bullseye-backports ninja-build \ llvm '^libxcb.*-dev' libxrender-dev libxi-dev gdb gcc-mingw-w64 \ g++-mingw-w64 gdb-mingw-w64 $ sudo update-alternatives --config x86_64-w64-mingw32-g++ $ sudo update-alternatives --config x86_64-w64-mingw32-gcc # 编译安装Linux版Qt6: $ git clone git://code.qt.io/qt/qt5.git ~/.qt_src $ cd .qt_src/ $ git checkout 6.2 $ perl init-repository $ ./configure -prefix /usr/local/qt6 -static -opensource -confirm-license \ -nomake examples -nomake tests -skip qtwebengine $ cmake --build . --parallel $ sudo cmake --install . # 清理构建环境: $ cmake --build . --target clean && \ git submodule foreach --recursive "git clean -dfx" && \ git clean -dfx # 编译安装Windows交叉编译版Qt6: $ wget https://gist.github.com/peterspackman/8cf73f7f12ba270aa8192d6911972fe8/raw/56ec269dc412a1055d00c4a810e6794283bc7dd4/mingw-w64-x86_64.cmake $ ./configure -platform linux-g++ -xplatform win32-g++ \ -device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32- \ -prefix /usr/local/qt6-win32 -qt-host-path /usr/local/qt6 \ -static -opensource -confirm-license -nomake examples \ -nomake tests -skip qtwebengine \ -- -DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=ON \ -DCMAKE_TOOLCHAIN_FILE=./mingw-w64-x86_64.cmake $ cmake --build . --parallel $ sudo cmake --install .
参考资料
- Qt官方Wiki:从Git构建Qt6
- Stack Overflow:如何在Linux上交叉编译Qt6用于Windows
- Gist配置脚本:mingw-w64-x86_64.cmake
内容的提问来源于stack exchange,提问作者cfrepak
相关产品推荐
相关产品推荐

