我想使用 Linux x86_64 主机交叉编译 Windows x86_64 目标的 Qt 库(最终是我的应用程序)。我觉得我很接近,但我可能对这个过程的某些部分有一个根本的误解。
我首先在我的 Fedora 机器上安装所有 mingw 包,然后修改win32-g++
qmake.conf 文件以适应我的环境。但是,我似乎被一些看似明显的 Qt 配置选项卡住了:-platform
和-xplatform
. Qt 文档说这-platform
应该是主机架构(您正在编译的地方)并且-xplatform
应该是您希望部署的目标平台。就我而言,我设置-platform linux-g++-64
了-xplatform linux-win32-g++
linux-win32-g++ 是我修改后的 win32-g++ 配置。
我的问题是,在使用这些选项执行配置后,我看到它调用了我系统的编译器而不是交叉编译器(x86_64-w64-mingw32-gcc)。如果我省略该-xplatform
选项并设置-platform
为我的目标规范(linux-win32-g++),它会调用交叉编译器,但是当它发现一些与 Unix 相关的函数未定义时会出错。
这是我最近尝试的一些输出:http: //pastebin.com/QCpKSNev。
问题:
当从 Linux 主机交叉编译 Qt for Windows 之类的东西时,是否应该调用本机编译器?也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗?
-xplatform
当我指定选项时,我不明白为什么 Qt 的配置脚本会尝试调用系统的本机编译器。如果我使用 mingw 交叉编译器,我什么时候必须处理规范文件?GCC 的规范文件对我来说仍然是一个谜,所以我想知道这里的一些背景是否会对我有所帮助。
一般来说,除了在我的 qmake.conf 中指定交叉编译器之外,我还需要考虑什么?