我想使用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的克++是我的改性Win32的克++结构。
我的问题是,在使用这些选项执行configure之后,我看到它调用系统的编译器,而不是交叉编译器(x86_64-w64-mingw32-gcc)。如果我省略该-xplatform
选项并设置-platform
为我的目标规范(linux-win32-g ++),它将调用交叉编译器,但是在发现未定义某些与Unix相关的函数时出错。
这是我最新尝试的一些输出:http : //pastebin.com/QCpKSNev。
问题:
从Linux主机交叉编译Windows版Qt之类的东西时,是否应调用本机编译器?也就是说,在交叉编译过程中,我们不应该仅使用交叉编译器吗?指定
-xplatform
选项时,我看不到为什么Qt的configure脚本试图调用系统的本机编译器。如果我使用的是mingw交叉编译器,什么时候需要处理specs文件?GCC的规范文件对我来说还是一个谜,所以我想知道这里的背景知识是否对我有帮助。
通常,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?