如何使用gcc / g ++在Linux上编译Windows?

我在Linux上使用freeglut编写了一些C ++(g ++)的效果,我用它们进行编译

g++ -Wall -lglut part8.cpp -o part8 

所以我想知道是否有可能有g ++使静态编译的Windows可执行文件包含所需的一切?

我没有Windows,所以这将是非常酷的,如果我能在Linux上做到这一点:)

mingw32作为Linux的一个包存在。 您可以使用它交叉编译和链接Windows应用程序。 这里有一个在Code :: Blocks论坛的教程。 例如,请注意命令更改为mingw32-gcc

编辑: Debian Linux,例如,在其仓库中有MinGW:

 $ apt-cache search mingw mingw32 - Minimalist GNU win32 (cross) compiler mingw32-binutils - Minimalist GNU win32 (cross) binutils mingw32-runtime - Minimalist GNU win32 (cross) runtime gcc-mingw32 - The GNU Compiler Collection (cross compiler for MingW32) ... 

在Linux下编译Windows的一个选项是通过mingw。 我在这里find一个非常有用的教程。

要在基于Debian的系统上安装mingw32,运行以下命令:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime

为了编译你的代码,你可以使用如下的代码:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

有时候你想直接在Linux中testing新的Windows应用程序。 你可以使用葡萄酒,虽然你应该永远记住,葡萄酒可能有错误。 这意味着你可能不确定一个错误是在葡萄酒,你的程序中,还是在两个方面,所以只能用葡萄酒进行一般testing。

要安装葡萄酒,请运行:
sudo apt-get install wine

安装一个交叉编译器,就像你的包pipe理器中的mingw64一样。 然后按以下方式编译:而不是简单地为64位Windows调用gcc调用i686-w64-mingw32-gcc for 32-bit Windows或x86_64-w64-mingw32-gcc"我也会使用--static选项,因为目标系统可能没有所有的库。

如果要编译其他语言(如Fortran), -gfortran在前面的命令-gfortranreplace为-gfortran

我已经在Linux上使用mingw来制作C中的Windows可执行文件,我怀疑C ++也会起作用。

来自: https : //fedoraproject.org/wiki/MinGW/Tutorial

从Fedora 17开始,可以轻松地为win32和win64目标构build(交叉编译)二进制文件。 这是使用mingw-w64工具链实现的: http ://mingw-w64.sf.net/。 使用这个工具链,您可以为以下编程语言构build二进制文件:C,C ++,Objective-C,Objective-C ++和Fortran。

“使用Windows交叉编译器的技巧和诀窍”: https : //fedoraproject.org/wiki/MinGW/Tips

对于Fedora来说

 sudo yum groupinstall -y "MinGW cross-compiler" 

build议的方法给了我在Ubuntu 16.04上的错误: E:找不到软件包mingw32

================================================== =========================

要在Ubuntu上安装此软件包,请使用以下命令:

 sudo apt-get install mingw-w64 

安装完后你可以使用它:

 x86_64-w64-mingw32-g++ 

请注意!

对于64位使用: x86_64-w64-mingw32-gc ++

对于32位使用: i686-w64-mingw32-g ++