我想使用Linux x86_64主机为Windows x86_64目标交叉编译Qt库(最终是我的应用程序).我觉得我很接近,但我可能对这个过程的某些部分有一个根本性的误解.
我首先在我的Fedora机器上安装了所有的mingw软件包,然后修改了win32-g++
QMake.conf文件以适应我的环境.然而,我似乎被一些似乎显而易见的Qt配置选项困住了:-platform
和-xplatform
.Qt文档说明-platform
应该是主Rack 构(您正在编译的地方),-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相关的函数未定义时会出现错误.
下面是我最近一次try 的一些结果:http://pastebin.com/QCpKSNev.
问题:
当从Linux主机交叉编译Qt for Windows之类的东西时,是否应该调用本机编译器ever?也就是说,在交叉编译过程中,我们不应该使用交叉编译器吗?当我指定
-xplatform
选项时,我不明白为什么Qt的configure脚本试图调用我系统的本机编译器.如果我使用的是mingw交叉编译器,我什么时候需要处理specs文件?GCC的规范文件对我来说仍然是个谜,所以我想知道这里的一些背景知识是否对我有帮助.
一般来说,除了在我的qmake中指定交叉编译器之外.我还需要考虑什么呢?