MinGW-w32 与 MinGW

Posted

技术标签:

【中文标题】MinGW-w32 与 MinGW【英文标题】:MinGW-w32 vs. MinGW 【发布时间】:2011-08-02 22:10:47 【问题描述】:

MinGW 项目与MinGW-w64 项目的32-bit portion 有什么区别? MinGW-w64 的 32 位部分是否与 x64 有任何关系?

似乎他们的编译器做了完全相同的事情......

【问题讨论】:

【参考方案1】:

http://www.mingw.org/ 的 MinGW 仅支持 gcc 32 位(主机和目标)。独立的minGW-w64 项目提供对 64 位的支持,并且还支持更大部分的 Windows API。然而,MinGW-w64 项目提供官方二进制构建:这些可以从开发人员的个人构建目录(最流行的是rubenvb)或从相关但独立的项目中获取,例如tdm-gcc 或 mingw-builds 或 msys2。

来源:http://wiki.qt.io/MinGW-64-bit

【讨论】:

【参考方案2】:

正如其他人所说,MinGW-w64 是原始 MinGW 的一个分支,支持 32 位和 64 位 x86 处理器。 你可以在这里找到分叉的原始动机:

https://sourceforge.net/p/mingw-w64/wiki2/History/

关于差异,您可以在此处找到列表:

https://sourceforge.net/p/mingw-w64/wiki2/Feature%20list/

【讨论】:

另外,“尽管有这个名字,MinGW-w64 都可以在 32 位和 64 位 Windows 上运行并构建二进制文件,但您需要确保下载根据您在哪个平台上运行以及您要针对哪个平台选择正确的包。”(强调我的)ascend4.org/Setting_up_a_MinGW-w64_build_environment#MinGW-w64【参考方案3】:

一个看起来像是“交叉编译”,从 64 位到 32 位,而另一个看起来是原生的。

不过,这只是一个快速浏览,所以我在这里可能还有很长的路要走......

编辑:这只是有点正确。提供了更好的解释here

【讨论】:

@Ben:这就是我的想法(嗯,32 位到 64 位),但实际上当您尝试在 MinGW-w64 中使用 -m32 进行编译时,它会显示“对不起,32 -位未编译”。 :( 在构建 mingw 时,可能需要使用 32 位扩展构建。当然,您可能没有构建 MinGW,因此获得了库存(即 64 位)。他们很可能建议将 MinGW 用于 32 位构建,因此除非您自己做,否则不要添加额外的选项(如 -m32)。 @Ben:我很困惑……有 MinGW、MinGW-w32 和 MinGW-w64。最后一个不能交叉编译32位,前两个不能交叉编译64位。我不确定我理解你的意思,但我的问题是前两者之间是否有区别。 @Ben:嗯……你具体指的是FAQ的哪一部分? 其实openfoamwiki.net/index.php/…提供了更好的解释!我已更新我的答案以包含此链接。【参考方案4】:

Wikipedia talk page on the MinGW article 对此有一些见解。基本上,MinGW-w64 项目似乎是 MinGW 源代码库的一个分支。我几乎没有找到关于分叉发生原因的详细信息(尽管this mailing-list post 和this rebuttal暗示这是某种形式的通常的开源政治),或者两个项目之间的后续差异。

大致上,它们是相同的;差异将在后续开发中出现。

【讨论】:

以上是关于MinGW-w32 与 MinGW的主要内容,如果未能解决你的问题,请参考以下文章

mingw-w64 线程:posix vs win32

什么是mingw以及windows下安装配置

使用 mingw-w64 和 cmake 构建 32 位和 64 位应用程序

MinGW vs MinGW-W64及其它

ubuntu32bit的系统如何配置mingw-w64的交叉编译toolchain?

MinGW-w64 C/C++编译器个版本说明