vlambda博客
学习文章列表

千丝万缕--C语言编译器

初学者看到GNU,Linux,Cygwin...等等简写就晕死了,本文来捋捋他们之间的关系。


GNU:

GNU是一个自由的操作系统,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标,名称来自GNU's Not Unix!的递归缩写,因为GNU的设计类似Unix,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。作为操作系统,GNU的发展仍未完成,其中最大的问题是具有完备功能的内核(HURD)尚未被开发成功。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。
百度百科


GCC:

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

GCC的初衷是为GNU操作系统专门编写一款编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。

搜狗百科


Cygwin:

Cygwin(GUN Cygnus windows)是许多自由软件的集合,最初由Cygnus Solutions(一家为自由软件服务的公司)开发。Cygwin的主要目的是通过重新编译,将POSIX(可移植操作系统接口,Portable Operating System Interface,例如Linux、BSD,以及其他Unix系统)系统上的软件移植到Windows上,当前Cygwin由Red Hat等负责维护。
维基百科


MinGW:

MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。
Cygwin 与 MinGW 皆可用来移植 Unix 软件到 Windows,但它们采用截然不同的实现。Cygwin 旨在提供一个完整的 POSIX 层,包括主流 Unix 的系统调用及库实现;其重视兼容性优先于性能。相对的,MinGW 则着重简化与性能。
维基百科




总结上面几段引用:
    1985年,麻省理工人工智能实验室的 斯托曼发现与实验室有来往的公司为了商业利益开始 限制其他人使用源代码或者停止提供源代码,他就想发展一个完全free的操作系统GNU来取代unix,值得一提的是1989年赫赫有名的GPL(GNU通用公共许可协议 GNU General Public License)也应运而生。GNU计划中除操作系统核心以外的其他部分,如编辑器、编译器、shell等都已经完成,这些除核心之外的软件 特别优秀,如:GNU编译器套装(GCC)、GNU的C库(glibc)、GNU核心工具组(coreutils)、GNU调试器(GDB)、GNU二进制实用程序(binutils)、GNOME桌面环境,想必你都有所耳闻。
    1992年,林纳斯·托瓦兹编写出了与UNIX兼容的Linux操作系统 内核并在 GPL下发布,Linux与其他GNU软件结合,完全自由的操作系统正式诞生。许多程序员参与了Linux的开发与修改,也经常将Linux当成开发GNU计划软件的平台,但是Linux内核本身不属于GNU计划。对于我们通常说的Linux系统,一些人希望为GNU正名--GNU/Linux。
     Cygwin负责将开源软件 移植到Windows上,所以Cygwin GCC还是GCC。MinGW是从Cygwin(1.3.3版)基础上发展而来,也是做跨平台开发的。
    当然还有英特尔公司开发的 Intel C++ Compiler和 微软公司的Microsoft Visual C++不再细说。