MinGW、MinGW-w64 和 MinGW-builds 有啥区别?

Posted

技术标签:

【中文标题】MinGW、MinGW-w64 和 MinGW-builds 有啥区别?【英文标题】:What is the difference between MinGW, MinGW-w64 and MinGW-builds?MinGW、MinGW-w64 和 MinGW-builds 有什么区别? 【发布时间】:2014-10-24 06:46:09 【问题描述】:

MinGW、MinGW-w64和MinGW-builds有什么区别?

我应该使用哪一个在 Windows 8 机器上使用 Eclipse IDE 编译 c++ 11 源代码?

【问题讨论】:

MinGW-builds 现在在其 sourceforge 页面上有此注释:“项目加入了 MinGW-W64,新版本将在 MinGW-W64(sourceforge.net/projects/mingw-w64) 网站上提供。” 【参考方案1】:

MinGW 是 Windows 的 GCC 端口。并非所有的 Windows API 都受支持(但对于许多程序来说,支持的东西就足够了)而且它仅适用于 32 位程序(通常也可以在 64 位 Windows 上运行,但有些不能,而且你不能将它们编译为 64 位)。

MinGW-w64 是一个改进版本,它支持 32 位和 64 位,以及更多的 WinAPI(仍然不是全部,因为工作量很大,但比 MinGW 更多)。

MinGW-w64 仅提供它们的源代码,但没有“仅使用”编译器的二进制文件。

MinGW-builds 是一个有点独立的项目,以最有用的配置提供二进制文件。要获得 MinGW-w64 的专门构建,仍然可以手动编译。

如果不需要任何异常,使用 MinGW-builds 自行安装程序是最简单的方法。也可以see here 寻求自助安装程序的帮助。

【讨论】:

mingw-w64 在修复错误方面也有更好的记录 另见:github.com/msys2/MINGW-packages/issues/2282【参考方案2】:

Mingw 将您的代码编译为在 Windows 下运行的 Windows 二进制文件。

Linux 的 Windows 子系统 (WSL) 生成 Linux 二进制文件。您可以在 WSL 下安装其他 Linux 程序,除非您需要图形界面。您可以从 WSL 访问 Windows 文件系统,但反之则不行。

只要您有 Cygwin DLL,Cygwin 就可以制作可以在 Cygwin shell 之外的 Windows 下运行的 Windows 二进制文件。这提供了一个与 Windows 完全兼容的类似 Linux 的环境。

【讨论】:

“Mingw-w64 使 Linux 二进制文件无法在 Mingw-w64 shell 之外的 Windows 中运行。” 不,独立的 MinGW[-w64] 工具集和已安装的工具集作为 MSYS[2] 的一部分,创建本地 Windows 二进制文件,它可以在 MinGW(或 MSYS)外壳之外正常运行。 (不过,与 -static 链接有助于不在 PATH 上的 DLL,例如,对于 MSYS2,msys-2.dll 也必须是可访问的。)

以上是关于MinGW、MinGW-w64 和 MinGW-builds 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

MinGW-w32 与 MinGW

在Windows中安装MinGW-w64

mingw-w64和Linux下的GCC有区别吗

WebKit 和 npapi 和 mingw-w64

使用 mingw-w64 编译 mex 的链接器错误

使用 cmake 和 mingw-w64 错误编译测试程序