如何使用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
在前面的命令-gfortran
replace为-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 ++