如何配置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。
问题:
从Linux主机交叉编译Windows的Qt之类的东西时, 是否 应调用本机编译器?也就是说,在交叉编译过程中,我们不应该 仅 使用交叉编译器吗?指定
-xplatform
选项时,我看不到为什么Qt的configure脚本试图调用系统的本机编译器。如果我使用的是mingw交叉编译器,什么时候需要处理specs文件?GCC的规范文件对我来说还是个谜,所以我想知道这里的背景知识是否对我有帮助。
通常,除了在我的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