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

时间:2010-01-09 16:27:30

标签: c++ opengl gcc glut freeglut

我在Linux上使用freeglut用C ++(g ++)编写了一些效果,然后用

编译它们
g++ -Wall -lglut part8.cpp -o part8

所以我想知道是否有可能让g ++制作包含所需内容的静态编译Windows可执行文件?

我没有Windows,所以如果我能在Linux上做到这一点真的很酷:)

7 个答案:

答案 0 :(得分:73)

mingw32作为Linux的包存在。您可以使用它交叉编译和链接Windows应用程序。有一个教程here at the Code::Blocks forum。请注意,该命令会更改为x86_64-w64-mingw32-gcc-win32,例如。

例如,Ubuntu在其存储库中有MinGW:

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]

答案 1 :(得分:26)

在Linux中编译Windows的一个选择是通过mingw。我找到了一个非常有用的教程here

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

要编译代码,您可以使用以下内容:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

您有时希望直接在Linux中测试新的Windows应用程序。你可以使用葡萄酒,但你应该始终记住葡萄酒可能有虫子。这意味着您可能无法确定葡萄酒,您的计划或两者中的错误,因此只能使用葡萄酒进行一般测试。

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

答案 2 :(得分:12)

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

如果要编译其他语言(如Fortran),请在先前的命令中将-gcc替换为-gfortran

答案 3 :(得分:12)

建议的方法在Ubuntu 16.04上给了我错误:E: Unable to locate package mingw32

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

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

sudo apt-get install mingw-w64

安装完成后,您可以使用它:

x86_64-w64-mingw32-g++

请注意!

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

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

答案 4 :(得分:5)

我在Linux上使用mingw在C中制作Windows可执行文件,我怀疑C ++也能正常工作。

我有一个项目,ELLCC,它将clang和其他东西打包成交叉编译工具链。我用它来编译clang(C ++),binutils和GDB for Windows。按照ellcc.org下载链接获取多个Linux主机的预编译二进制文件。

答案 5 :(得分:4)

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

  

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

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

答案 6 :(得分:1)

for Fedora it's

sudo yum groupinstall -y "MinGW cross-compiler"