MinGW的简单解释

时间:2011-10-17 06:49:55

标签: c windows gcc cygwin mingw

我是一个狂热的Python用户,似乎我需要在我的Windows机器上安装MinGW来编译一些库。我对MinGW和GCC有点困惑。这是我的问题(从真实的虚拟角度来看):

所以Python是解释和编译的语言。有Linux的Linux和Windows实现,只需安装并使用二进制文件来执行他的代码。它们捆绑了一堆你可以使用的内置库。我读过的内容与Ruby相同。

现在,我已经做了一点C,我知道有一个人可以编译它。它有自己的内置库,可以使用它们称为头文件。现在,回到学校的那天,C,正在一个名为Turbo-C的vi类IDE中编写代码,然后按F9编译它。这几乎是我的C教育结束的地方。

什么是MinGW,什么是GCC?我一直主要研究Windows系统,甚至最近开始使用Cygwin。它们不一样吗?

点击这些区域的简单解释会有所帮助。

(道歉,如果这篇文章听起来很愚蠢/愚蠢。我以为我会问这里。忽略这些核心位从来没有让任何人成为更好的程序员。)

谢谢大家。

5 个答案:

答案 0 :(得分:25)

MinGW是Windows平台的完整GCC工具链(包括六个前端,如C,C ++,Ada,Go和诸如此类),它们编译并链接到msvcrt.dll中的Windows操作系统组件C运行时库。相反,它试图成为 minimal (因此得名)。

这意味着,除了Cygwin之外,MinGW 不会尝试在Windows之上提供完整的POSIX层,但另一方面它不需要您链接特殊的兼容性库。
因此, 对您编写的程序没有任何GPL许可证含义(值得注意的例外:分析库,但您通常不会分发那些无关紧要的内容)。

较新的MinGW-w64带有大约99%完整的Windows API绑定(不包括ATL等),包括x64支持和实验性ARM实现。您可能偶尔会发现一些奇特的常数未定义,但99%的人使用99%的时间,它的效果非常好。

您也可以使用POSIX中较大的部分,只要它在Windows下以某种形式实现即可。与MinGW不兼容的一个主要POSIX事情是fork,因为在Windows下没有这样的东西(Cygwin为实现它而经历了很多痛苦)。
还有一些其他小事,但总而言之,大多数事情都是有用的。

所以,在一个非常简单的句子中:MinGW(-w64)是一个“简单的编译器东西”,它允许你为Windows编写本机二进制可执行文件,不仅用C和C ++,还有其他语言。

答案 1 :(得分:9)

要编译C程序,您需要为特定计算机提供 C实现

C实现基本上包括编译器(它的preprocesser和headers)和一个库(现成的可执行代码)。

在安装了Windows的计算机上,包含大多数现成可执行代码的库与gcc编译器不兼容...因此要在Windows中使用此编译器,您需要一个不同的库:那就是{{ 1}}进入。除其他事项外,MinGW还提供了与MinGW一起进行C实现所需的库。


Windows库和MSVC一起实现了不同的实现。

答案 2 :(得分:3)

MinGW是大多数GNU构建实用程序的实现,例如gcc和make on windows,而gcc只是编译器。 Cygwin是一个更大更复杂的软件包,它比MinGW安装的更多。

答案 3 :(得分:2)

MinGW是一套包含GCC(以及其他)的开发工具,GCC是该套件中的C编译器。

答案 4 :(得分:-1)

MinGW存在的唯一原因是为不能使用本机Windows工具的开发人员提供类似Linux的环境。它在Win32 / Win64平台上几乎在每个方面都不如微软tooolchains,但它提供了Linux开发人员不必学习任何新东西的环境,他/她几乎无需修改即可编译linux代码。这是一个值得怀疑的方法,但很多人发现方便比开发的其他方面更重要。 它与C或C ++无关,如前面的答案所示,它与开发人员想要的环境有关。关于Windows上的GNU工具链和它的nessessety的争论只是 - 一个参数

GCC - unix / linux编译器, MinGW - Windows环境下GCC的近似, 微软编译器和英特尔编译器 - 更多与名称相同(在Windows上产生更多,更好的程序,然后是MinGW,顺便说一句)