在Ubuntu 14.04上交叉编译Qt5构建Windows版钱包遇错求助
解决Ubuntu 14.04下用MinGW32交叉编译钱包程序时Qt5Gui找不到的问题
我刚梳理完你的问题,核心原因其实很清晰:你安装的qt5-default是给Linux本地编译用的,而交叉编译Windows程序需要的是Windows平台的Qt5库(MinGW编译版),CMake找不到对应目标平台的配置文件才会抛出这个错误。下面给你一步步的解决办法:
1. 安装MinGW32的Qt5交叉编译依赖
首先确保你装了完整的MinGW工具链,再安装针对Windows平台的Qt5交叉编译包:
# 更新仓库并安装MinGW-w64工具链(Ubuntu14.04推荐用这个,比旧版mingw32更完善) sudo apt-get update sudo apt-get install mingw-w64 # 安装针对MinGW的Qt5基础开发包 sudo apt-get install qtbase5-mingw-w64 qt5-qmake qtbase5-dev-tools
2. 创建CMake交叉编译工具链文件
CMake需要明确知道你要交叉编译到Windows,所以得写一个工具链配置文件。在项目根目录新建toolchain-mingw32.cmake,内容如下:
# 指定目标系统为Windows SET(CMAKE_SYSTEM_NAME Windows) # 指定MinGW的编译工具 SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) # 指定MinGW的根路径,CMake会在这里查找目标平台的库和头文件 SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) # 配置CMake查找规则:不查找本地程序,只在目标路径找库和头文件 SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # 手动指定Qt5Gui的配置文件路径(对应刚才安装的交叉编译版Qt5) SET(Qt5Gui_DIR /usr/i686-w64-mingw32/lib/cmake/Qt5Gui) SET(Qt5Core_DIR /usr/i686-w64-mingw32/lib/cmake/Qt5Core)
如果你的MinGW是手动编译安装的,记得修改上面的路径为实际安装位置。
3. 使用工具链文件重新编译
清空之前的build目录(或者新建一个专门的Windows编译目录),然后执行编译命令:
# 新建Windows编译目录,避免和Linux编译文件混淆 mkdir build-win && cd build-win # 用工具链文件配置CMake cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw32.cmake # 开始编译 make
额外注意事项
- 如果Ubuntu14.04仓库里没有
qtbase5-mingw-w64包,你需要手动下载Qt官方的MinGW预编译包(对应项目要求的Qt5版本),解压后把Qt5Gui_DIR指向解压目录下的lib/cmake/Qt5Gui路径。 - 检查项目的CMakeLists.txt,有没有硬编码Linux相关的路径或依赖,如果有需要调整为支持交叉编译的写法。
内容的提问来源于stack exchange,提问作者StyleSh1t
相关产品推荐
相关产品推荐

