Sag*_*lly 8 qt cross-compilation
我一直在尝试在 Linux 中编译 .pro 文件以生成 Windows 可执行文件。我已经阅读了世界上所有关于使用 mingw 的链接,但到目前为止还没有任何效果。是否有我遗漏的东西,或者有人对如何做到这一点有非常好的一步一步吗?
Ubuntu 14.04.2 QT 4.8
以下步骤取自关于堆栈溢出的帖子的答案,如果使用 qt4 进行构建,请确保给他们一个赞。
只需使用M 跨环境 (MXE)。它消除了整个过程的痛苦:
得到它:
git clone https://github.com/mxe/mxe.git
Run Code Online (Sandbox Code Playgroud)为 Windows 构建 Qt、它的依赖项和交叉构建工具;在具有良好 Internet 访问权限的快速机器上,这将需要大约一个小时;下载大约500MB:
cd mxe && make qt
Run Code Online (Sandbox Code Playgroud)转到您的应用程序目录并将交叉构建工具添加到 PATH 环境变量:
export PATH=<mxe root>/usr/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
运行 Qt Makefile 生成器工具,然后构建:
<mxe root>/usr/i686-pc-mingw32/qt/bin/qmake && make
Run Code Online (Sandbox Code Playgroud)您应该在 ./release 目录中找到二进制文件:
wine release/foo.exe
Run Code Online (Sandbox Code Playgroud)一些注意事项:
使用 MXE 存储库的 master 分支;它似乎得到了开发团队的更多喜爱。
输出是一个 32 位静态二进制文件,它将在 64 位 Windows 上运行良好。
以下步骤取自关于堆栈溢出的帖子的答案,如果使用 qt5 进行构建,请确保给他们一个赞。
以下是完整说明:
得到它:
git clone https://github.com/mxe/mxe.git
Run Code Online (Sandbox Code Playgroud)为 Windows 构建 Qt 5:
cd mxe && make qtbase
Run Code Online (Sandbox Code Playgroud)
这将首先构建其依赖项和交叉构建工具;在具有良好 Internet 访问权限的快速机器上应该需要不到一个小时的时间。
由于 Qt 5 的新模块化特性,各种主要的 Qt 组件现在位于不同的 tarball 中。上面选择的那个 qtbase 应该给你足够的功能来运行普通的 GUI 应用程序,这是我自己的(小)应用程序所需要的。
如果您想构建所有 Qt 5,则需要运行make qt5(而不是 make qtbase)。请注意,完成它需要更长的时间,因此请确保您需要额外的功能。
进入你的应用程序目录,并运行 Qt Makefile 生成器工具:
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
Run Code Online (Sandbox Code Playgroud)构建你的项目:
make
Run Code Online (Sandbox Code Playgroud)您应该在 ./release 目录中找到二进制文件:
wine release/foo.exe
Run Code Online (Sandbox Code Playgroud)一些注意事项:
这是在我的 64 位 Debian 8 和 Windows 上测试的。
输出是一个 32 位静态可执行文件,它将在 64 位 Windows 上运行良好。
如果您想要 64 位可执行文件,请使用以下命令构建 Qt:
make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
Run Code Online (Sandbox Code Playgroud)
默认 MXE_TARGETS 值为 i686-w64-mingw32.static。