我想使用 Linux x86_64 主机机器交叉编译 Qt 库(以及最终的应用程序)为 Windows x86_64 目标平台。我感觉已经很接近了,但是可能有一些步骤我有基本的误解。
我开始在我的 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++ 配置文件。
我的问题是,在使用这些选项执行 configure 后,我发现它调用的是我的系统编译器而不是交叉编译器(x86_64-w64-mingw32-gcc)。如果我省略 -xplatform
选项,并将 -platform
设置为我的目标规范 (linux-win32-g++),它会调用交叉编译器,但当它发现一些 Unix 相关的函数未定义时,则会产生错误。
这是我最新尝试的一些输出:http://pastebin.com/QCpKSNev.
问题:
在从 Linux 主机交叉编译 Windows 平台上的 Qt 等内容时,本地编译器是否应该被调用?也就是说,在交叉编译过程中,我们不应该仅使用交叉编译器吗? 我不明白为什么 Qt 的 configure 脚本在我指定了
-xplatform
选项后仍然试图调用系统的本地编译器。如果我使用mingw的交叉编译器,什么时候需要处理规格文件(specs file)?GCC的规格文件对我来说仍然有些神秘,因此我想知道这里是否需要一些背景知识。
通常情况下,在我的qmake.conf中指定交叉编译器之外,还有什么需要考虑的吗?
x86_64-w64-mingw32-as
而不是本地的工具链引起的。 - Mr. Shickadance