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

Lou*_*ise 101 c++ opengl gcc glut freeglut

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

g++ -Wall -lglut part8.cpp -o part8
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*Dog 81

mingw32作为Linux的包存在.您可以使用它交叉编译和链接Windows应用程序.Code :: Blocks论坛上有一个教程.例如,请注意命令变为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
[...]
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用debian,mingw32已经存在于存储库中,还有很少的预编译库. (3认同)
  • mingw32中的“ 32”是否表示我只能生成32位二进制文​​件?是否有产生64位二进制文​​件的解决方案? (3认同)

agg*_*877 26

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

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

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

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

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

  • 你不需要指定`mingw32-binutils`和`mingw32-runtime`因为它们是`mingw32`的依赖项 (5认同)
  • @henje要彻底,如果你没有指定它们,它们可以在卸载`mingw32`时被包管理器自动删除(标记为"依赖").我指定它们,它们不会(标记为"手册") "). (2认同)

0x8*_*00D 15

建议的方法给我在Ubuntu 16.04上的错误: E:无法找到包mingw32

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

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

sudo apt-get install mingw-w64
Run Code Online (Sandbox Code Playgroud)

安装后你可以使用它:

x86_64-w64-mingw32-g++
Run Code Online (Sandbox Code Playgroud)

请注意!

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

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


Ped*_*nda 13

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

如果你想要编译其他语言,如Fortran,替换-gcc-gfortran前面命令.


Ric*_*ton 7

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

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

  • 自从我发布这个答案以来,我已经走得更远了。我有一个项目 ELLCC,它将 clang 和其他东西打包为交叉编译器工具链。我用它来编译适用于 Windows 的 clang (C++)、binutils 和 GDB。点击 http://ellcc.org 上的下载链接,获取适用于多个 Linux 主机的预编译二进制文件。 (2认同)

ilj*_*jau 5

来自: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