我想使用 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 + + 配置。
我的问题是,在使用这些选项执行 configure 之后,我发现它调用的是系统的编译器,而不是交叉编译器(x86 _ 64-w64-mingw32-gcc)。如果我省略了 -xplatform
选项并将 -platform
设置为我的目标规范(linux-win32-g + +) ,它将调用交叉编译器,但是当它发现一些与 Unix 相关的函数没有定义时,就会出错。
下面是我最新尝试的一些输出: http://pastebin.com/QCpKSNev。
问题:
当从 Linux 主机交叉编译诸如 Qt for Windows 之类的东西时,应该调用本机编译器 永远不会吗?也就是说,在交叉编译过程中,我们不应该使用 只有交叉编译器吗?我不明白为什么当我指定 -xplatform
选项时,Qt 的配置脚本会试图调用我的系统的本机编译器。
如果我使用 Mingw 交叉编译器,那么什么时候需要处理 specs 文件?GCC 的规格文件对我来说仍然是一个谜,所以我想知道这里的一些背景知识是否能帮助我。
一般来说,除了在 qmake.conf 中指定交叉编译器之外,我还需要考虑什么?