首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何配置Qt以实现从Linux到Windows目标的交叉编译?

如何配置Qt以实现从Linux到Windows目标的交叉编译?
EN

Stack Overflow用户
提问于 2012-06-07 23:14:24
回答 5查看 86.1K关注 0票数 85

我希望使用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

问题:

  1. 当从Linux主机交叉编译Qt for Windows之类的东西时,应该调用本机编译器吗?也就是说,在交叉编译过程中,我们不应该只使用交叉编译器吗?当我指定了-xplatform选项时,我不明白为什么Qt的配置脚本试图调用我的系统的本机编译器。
  2. 如果我使用的是mingw交叉编译器,我什么时候需要处理一个specs文件?对我来说,GCC的规范文件仍然是一个谜,所以我想知道这里的一些背景知识是否会对我有所帮助。
  3. 总的来说,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?
EN

Stack Overflow用户

发布于 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

下面是我使用的整个配置命令:

代码语言:javascript
运行
复制
    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的问题,我也提到过它的解决办法。

票数 4
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10934683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档