A simple explanation of what is MinGW
我是Python的狂热用户,看来我需要在Windows机器上安装MinGW才能编译一些库。我对MinGW和GCC感到有些困惑。这是我的问题(从真实的虚拟角度来看):
因此,Python是既解释又编译的语言。有Linux和Windows的Python实现,可以简单地安装并使用二进制代码执行其代码。它们与一堆可供您使用的内置库捆绑在一起。我所阅读的Ruby也是如此。
现在,我做了一点点的C,我知道一个人可以编译它。它具有内置的库,这些库似乎称为可以使用的头文件。现在,回到学校的时候,C在一个类似vi的称为Turbo-C的IDE中编写代码,然后按F9进行编译。那几乎就是我的C语言教育结束的地方。
什么是MinGW?什么是GCC?我主要在Windows系统上工作,最近还开始使用Cygwin。他们不一样吗?
对这些区域进行简单的解释会有所帮助。
(如果这篇文章听起来愚蠢/愚蠢,我深表歉意。我想我想问一下。忽略这些核心知识永远不会使任何人成为更好的程序员。)
感谢大家。
MinGW是Windows平台的完整GCC工具链(包括六个前端,例如C,C ++,Ada,Go和whatnot),可在msvcrt.dll中编译并链接到Windows OS组件C运行时库。而是尝试使其最小化(因此得名)。
这意味着,除了Cygwin以外,MinGW不会尝试在Windows之上提供完整的POSIX层,但是另一方面,它不需要您链接特殊的兼容性库。
因此,它也不会对您编写的程序产生任何GPL许可证的影响(值得注意的例外:性能分析库,但通常不会分发这些库,所以这无关紧要)。
较新的MinGW-w64带有大约99%的完整Windows API绑定(不包括ATL等),包括x64支持和实验性ARM实现。您可能偶尔会发现一些未定义的奇异常数,但是对于99%的人使用99%的时间的情况来说,它工作得很好。
您也可以使用POSIX的大部分功能,只要它在Windows下以某种形式实现即可。与MinGW不兼容的一个主要POSIX问题是
还有其他一些小事情,但总的来说,大多数事情还是可以工作的。
因此,用一个非常简化的句子来说:MinGW(-w64)是一个"简洁的编译器",使您不仅可以使用C和C ++,还可以使用其他语言为Windows编写本机二进制可执行文件。
要编译C程序,您需要针对特定??计算机的C实现。
C实现基本上由一个编译器(其预处理器和标头)和一个库(现成的可执行代码)组成。
在安装了Windows的计算机上,包含大多数现成的可执行代码的库与
Windows库和MSVC一起进行了不同的实现。
MinGW是大多数GNU构建实用程序的实现,例如gcc和Windows上的make,而gcc只是编译器。 Cygwin是一个更大,更复杂的软件包,与MinGW相比,安装得多。
MinGW是一套包含GCC(以及其他)的开发工具,而GCC是该套件中的C编译器。
MinGW存在的唯一原因是为无法使用本机Windows工具的开发人员提供类似linux的环境。在Win32 / Win64平台上,它几乎在各个方面都不如Microsoft链,但它提供了这样的环境:Linux开发人员不必学习任何新知识,并且他/她几乎可以无需修改就可以编译Linux代码。这是一个值得怀疑的方法,但是许多人发现便利性比开发的其他方面更为重要。
如先前答案中所述,它与C或C ++无关,它与开发人员想要的环境有关。关于Windows上的GNU工具链及其必要性的争论只是这样-一个争论
GCC-Unix / Linux编译器,
MinGW-Windows环境下的GCC近似值,
Microsoft编译器和Intel编译器-顾名思义(两者在Windows上都比MinGW,btw产生的程序好得多)