30

我有一个要为 Windows 交叉编译的项目。我有适当的 Makefile 并且一切都适用于g++. 我跑了

$ apt install mingw-w64

并下载了 500 MB 的软件包,但我不知道如何实际运行它。没有mingw可执行文件,那么我该如何实际编译呢?

4

4 回答 4

20

如果您查看 Ubuntu 包网络服务器上的文件列表以了解mingw-w64的组成包:

您可以看到它mingw-w64提供了一个工具链,即一组替代工具(编译器、链接器、头文件等),用于为另一个系统编译您的代码。

假设您要为 64 位系统编译 C++ 代码,则需要使用/usr/bin/x86_64-w64-mingw32-g++-win32. 您可以使用CXX环境变量来告诉大多数 Makefile 使用该编译器来编译代码。

于 2013-04-13T10:20:49.983 回答
8

另一种选择是查看 Mingw Cross Environment ( MXE ),它专门针对从 Linux 到 Windows(以及最近到 Mac)的交叉编译。该软件包具有对大量库的内置 xsupport,并且正在积极开发中。只需查看该网站,了解它是否适​​合您的需求。

顺便说一句,建议您使用开发版本而不是发布版本。这是因为发布版本通常很快就会过时,因为(库的)包维护者更改 URL 导致 MXE 发布版本损坏。开发版本通常更新。

于 2013-04-13T11:19:46.973 回答
7

我用它来交叉编译postgres:

$ sudo apt-get install mingw-w64
$ ./configure --host=i686-w64-mingw32 --without-zlib #  32 bit
# or --host=x86_64-w64-mingw32  64 bit

参考这里

其他项目的做法不同,例如 ffmpeg:

 ./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32-

或一些

  ./configure CC=i686-w64-mingw32-gcc ...

等等。 GL!

于 2014-10-09T15:06:27.430 回答
2

这是我针对mingw g++交叉编译器的方式:

$ ./configure --with-mingw-cross-compiler=g++-mingw-w64-i686
于 2019-12-12T20:57:32.950 回答