我希望使用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。
问题:
-xplatform
选项时,我不明白为什么Qt的配置脚本试图调用我的系统的本机编译器。发布于 2015-09-03 20:25:53
为了编译Qt,必须运行它的configure
脚本,使用-platform
指定主机平台(例如,如果您使用g++编译器在64位linux上构建,则指定-platform linux-g++-64
)和使用-xplatform
指定目标平台(例如,如果您交叉编译到windows,则指定-xplatform win32-g++
)。
我还添加了这个标志:-device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32-
,它指定了我正在使用的工具链的前缀,在为windows构建二进制文件的所有makefile中,这个前缀都将被放在‘using’或'g++‘的前面。
最后,在构建icd时可能会遇到问题,这显然是用于向Qt添加ActiveX支持的东西。您可以通过将标志-skip qtactiveqt
传递给配置脚本来避免这种情况。我从这个bug报告中得到了这个:https://bugreports.qt.io/browse/QTBUG-38223
下面是我使用的整个配置命令:
cd qt_source_directory
mkdir my_build
cd my_build
../configure \
-release \
-opensource \
-no-compile-examples \
-platform linux-g++-64 \
-xplatform win32-g++ \
-device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32- \
-skip qtactiveqt \
-v
至于你的问题:
1-是。将调用本机编译器,以便构建构建过程中所需的一些工具。也许像qconfig或qmake这样的东西,但我不能完全确定到底是哪种工具。
2-抱歉。我不知道编译器=/上下文中的specs文件是什么。但据我所知,你不需要处理这个问题。
3-您可以在配置命令行中指定交叉编译器前缀,而不是在qmake.conf文件中指定,如上所述。还有idc的问题,我也提到过它的解决办法。
https://stackoverflow.com/questions/10934683
复制相似问题