如何在Linux上用gccg++为Windows编译?

问题描述 投票:115回答:7

我在Linux上用freeglut用C++(g++)写了一些效果,我用以下方法编译它们

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

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

我没有Windows系统,所以如果能在Linux系统上做到这一点,那就太酷了 :)

c++ opengl gcc glut freeglut
7个回答
90
投票

mingw32作为Linux的一个包存在。你可以用它交叉编译和-链接Windows应用程序。有一个教程 在Code::Blocks论坛上. 注意,命令改为 x86_64-w64-mingw32-gcc-win32例如,Ubuntu的软件库中就有MinGW:

例如,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
[...]

30
投票

在Linux中编译Windows的一个选择是通过mingw. 我发现了一个非常有用的教程 此处.

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

要编译你的代码,你可以使用类似: i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

有时你会想在Linux中直接测试新的Windows应用程序。你可以用wine来测试,尽管你应该时刻记住wine可能有bug。这意味着你可能无法确定一个bug是在wine、你的程序中,或者两者都有,所以只用wine进行一般测试。

要安装wine,请运行。sudo apt-get install wine


19
投票

建议的方法在Ubuntu 16. 04上给我带来了错误: E: Unable to locate package mingw32 (无法找到软件包mingw32)

要在Ubuntu上安装这个软件包,请使用以下方法。

sudo apt-get install mingw-w64

安装完成后,您就可以使用它了。

x86_64-w64-mingw32-g++

请注意!

用于64位的。 x86_64-w64-mingw32-g++。

适用于32位使用。 i686-w64-mingw32-g++。


14
投票

安装一个交叉编译器,比如你的包管理器中的mingw64.然后用以下方式编译:而不是简单地调用 gcc 召唤 i686-w64-mingw32-gcc 适用于32位Windows或 x86_64-w64-mingw32-gcc" 用于64位Windows。我还会使用 --static 选项,因为目标系统可能没有所有的库。

如果你想编译其他语言,比如Fortran,可以用下面的选项代替 -gcc-gfortran 在前面的命令中,我使用了mingw来制作Windows的可执行文件。


7
投票

我在Linux上用mingw做过C语言的Windows可执行文件,我怀疑C++也可以。

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


5
投票

从。https:/fedoraproject.orgwikiMinGWTutorial。

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

"使用Windows交叉编译器的提示和技巧"。https:/fedoraproject.orgwikiMinGWTips。


3
投票

对于Fedora来说,它是

sudo yum groupinstall -y "MinGW cross-compiler"
© www.soinside.com 2019 - 2024. All rights reserved.