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

Ubuntu 22.04下MinGW64交叉编译Qt6遇CMake组件查找错误

Ubuntu 22.04下MinGW64交叉编译Qt6后CMake无法识别Core/Widgets组件的解决方法

一、先解决ZLIB缺失问题(核心诱因)

Qt6编译过程中依赖ZLIB,即使表面编译完成,缺失ZLIB会导致Core、Widgets等组件的配置文件生成不完整,最终触发CMake的识别错误。

1. 安装MinGW目标平台的ZLIB开发包

执行以下命令安装:

sudo apt install libz-mingw-w64-dev

2. 在工具链文件中强制指定ZLIB路径

在你的MinGW工具链文件末尾添加以下内容,确保CMake能找到目标平台的ZLIB:

# 手动指定ZLIB路径,适配MinGW交叉编译环境
set(ZLIB_INCLUDE_DIR /usr/x86_64-w64-mingw32/include)
set(ZLIB_LIBRARY /usr/x86_64-w64-mingw32/lib/libz.a)
set(ZLIB_FOUND TRUE)

3. 重新完整编译Qt6

删除原Qt6构建目录,重新用工具链配置并编译,确保编译过程中不再出现Could NOT find ZLIB的提示。

二、修复CMake对Qt6组件的识别问题

如果ZLIB问题解决后仍报错,按以下步骤排查:

1. 验证组件配置文件有效性

打开/home/vinci/Downloads/QtPlayground/build/_deps/qt6-build/lib/cmake/Qt6Core/Qt6CoreConfig.cmake,检查:

  • 文件中是否设置了set(Qt6Core_FOUND TRUE)
  • 是否正确指定了目标平台的库路径(如/usr/x86_64-w64-mingw32/lib或Qt6构建目录下的库路径)

2. 调整CMake查找路径

在调用find_package(Qt6)之前,添加以下代码,明确告诉CMake去哪里找Qt6的组件:

# 指定Qt6构建目录为前缀路径
set(CMAKE_PREFIX_PATH "/home/vinci/Downloads/QtPlayground/build/_deps/qt6-build")
# 将Qt6构建目录加入目标查找根路径
list(APPEND CMAKE_FIND_ROOT_PATH "/home/vinci/Downloads/QtPlayground/build/_deps/qt6-build")

3. 检查工具链的包查找规则

确认工具链文件中的CMAKE_FIND_ROOT_PATH_MODE_PACKAGE设置为ONLY(你的配置已经正确),避免CMake误查主机系统的Qt库。

4. 确认Qt6组件已正确编译

检查Qt6构建目录的lib文件夹下,是否存在以下文件:

  • libQt6Core.dll.a
  • libQt6Widgets.dll.a
    如果不存在,说明组件未被编译,需要重新配置Qt6编译参数,确保Core和Widgets被启用:
cmake ../qt6-src \
  -DCMAKE_TOOLCHAIN_FILE=/path/to/your/toolchain.cmake \
  -DQT_HOST_PATH=/usr \
  -DCMAKE_INSTALL_PREFIX=/path/to/qt6-install \
  -DBUILD_SHARED_LIBS=ON \
  -DQT_BUILD_EXAMPLES=OFF \
  -DQT_BUILD_TESTS=OFF

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:35:05