You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux上交叉编译面向Windows的Qt6并解决工具链不生效问题

Qt 6 Linux 交叉编译到 Windows 报错修复方案

问题根因

Qt 6 已全面切换为 CMake 构建体系,你当前使用的-device-option CROSS_COMPILE、-xplatform等参数均为 Qt 5 qmake 时代的交叉编译配置项,在 Qt 6 中无法被 CMake 识别,因此会出现QT_QMAKE_DEVICE_OPTIONS未使用的警告,CMake 会默认调用系统原生 GCC 工具链编译面向 Windows 平台的代码,最终导致tchar.h等 Windows 专属头文件找不到的报错。

前置检查

  • 确认已安装完整的 64 位 MinGW 交叉编译工具链:sudo apt install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64-tools
  • 确认你预先编译的主机版 Qt 6.2.1 可正常运行(即配置中指定的/home/papoj/Projects/host_qtbuild路径有效)

调整配置命令

清空原构建目录后,使用以下调整后的 configure 命令,显式通过 CMake 参数指定交叉编译工具链:

./../qt-everywhere-src-6.2.1/configure \
  -prefix $PWD/qt6-2.1-win64 \
  -platform linux-gcc-64 \
  -opensource -confirm-license \
  -opengl desktop \
  -qt-host-path /home/papoj/Projects/host_qtbuild \
  -DCMAKE_SYSTEM_NAME=Windows \
  -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc \
  -DCMAKE_CXX_COMPILER=/usr/bin/x86_64-w64-mingw32-g++ \
  -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres

参数说明:

  • 所有CMAKE_前缀的参数会直接透传给 CMake,强制指定目标系统为 Windows,以及对应的交叉编译工具链路径,解决工具链不切换的问题
  • 新增-confirm-license避免编译过程中触发许可确认交互
  • 建议将安装前缀指定为独立目录,方便后续使用

编译安装

配置执行完成后,先检查配置输出的工具链信息,确认 C/C++ 编译器路径为 MinGW 路径而非系统原生/usr/bin/gcc//usr/bin/g++,确认无误后执行编译安装:

cmake --build . --parallel $(nproc)
cmake --install .

可选优化配置

如果编译过程中出现模块报错,可以添加跳过不需要的 Qt 模块的参数,减少编译复杂度,比如:

-skip qtwebengine -skip qt3d -skip qtquick3d -skip qtlocation

如果需要静态编译,可以额外添加-static参数,若存在依赖缺失问题,可以通过-DCMAKE_PREFIX_PATH=MinGW依赖库路径指定第三方依赖的安装位置。

内容的提问来源于stack exchange,提问作者papoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:54:04