MinGW在linux上进行交叉编译

时间:2013-04-13 10:15:54

标签: c++ linux windows mingw cross-compiling

我有一个项目,我想为Windows编译。我有适当的makefile,一切都适用于g ++。我跑了apt-get install mingw32,下载了一个100-ahh的MB软件包,但我找不到如何实际运行它。没有mingw32可执行文件,也无法在互联网上找到任何帮助,那么我该如何用它进行编译?

4 个答案:

答案 0 :(得分:12)

如果您看到dpkg -L mingw32的输出,您可以看到该软件包包含一个工具链,即一组可用于在另一个系统中编译代码的替代工具(编译器,链接器等)。

您必须使用/usr/bin/i586-mingw32msvc-g++才能编译代码。如果我记得正确存在一个变量来告诉Makefile使用这样的工具链。

答案 1 :(得分:5)

我用它来交叉编译postgres:

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

ref here

其他项目采用不同的方式,例如ffmpeg:

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

或某些

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

等。 GL!

答案 2 :(得分:4)

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

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

答案 3 :(得分:0)

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

$ ./configure --with-mingw-cross-compiler=g++-mingw-w64-i686