如何配置Qt以便从Linux到Windows目标进行交叉编译?

我想使用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。

问题:

  1. 从Linux主机交叉编译Windows的Qt之类的东西时, 是否 应调用本机编译器?也就是说,在交叉编译过程中,我们不应该 使用交叉编译器吗?指定-xplatform选项时,我看不到为什么Qt的configure脚本试图调用系统的本机编译器。

  2. 如果我使用的是mingw交叉编译器,什么时候需要处理specs文件?GCC的规范文件对我来说还是个谜,所以我想知道这里的背景知识是否对我有帮助。

  3. 通常,除了在我的qmake.conf中指定交叉编译器之外,我还需要考虑什么?

回答:

只需使用M跨环境(MXE)。它消除了整个过程的痛苦:

  • 得到它:

    $ git clone https://github.com/mxe/mxe.git

  • 安装构建依赖项

  • 为Windows构建Qt,其依赖项以及交叉构建工具;在配备了不错的互联网接入的快速机器上,这将花费大约一个小时;下载约500MB:

    $ cd mxe && make qt

  • 转到应用程序的目录,然后将交叉构建工具添加到 环境变量中:

    $ export PATH=<mxe root>/usr/bin:$PATH

  • 运行Qt Makefile生成器工具,然后构建:

    $ <mxe root>/usr/i686-pc-mingw32/qt/bin/qmake && make

  • 您应该在./release目录中找到二进制文件:

    $ wine release/foo.exe

  • 使用MXE信息库的master分支;似乎从开发团队那里获得了更多的爱。

  • 输出是一个32位静态二进制文件,它将在64位Windows上很好地工作。

以上是 如何配置Qt以便从Linux到Windows目标进行交叉编译? 的全部内容, 来源链接: utcz.com/qa/432884.html

回到顶部