Cygwin

Cygwin是许多自由软件的集合，最初由Cygnus Solutions开发，用于各种版本的Microsoft Windows上，运行类UNIX系统。Cygwin的主要目的是通过重新编译，将POSIX系统（例如Linux、BSD，以及其他Unix系统）上的软件移植到Windows上。Cygwin移植工作在Windows NT上比较好，在Windows 95和Windows 98上，相对差劲一些。目前Cygwin由Red Hat等负责维护。

 简介 
Cygwin包括了一套库，该库在Win32系统下实现了POSIX系统调用的API；还有一套GNU开发工具集（比如GCC、GDB），这样可以进行简单的软件开发；还有一些UNIX系统下的常见程序。2001年，新增了X Window System。

Cygwin由两部分组成：动态链接库（DLL），以C标准库的形式作为API兼容性层提供POSIX API功能的重要部分，以及提供Unix的大量软件工具和应用程序样的外观和感觉。 

另外还有一个名为MinGW的库，可以跟Windows本地的MSVCRT库（Windows API）一起工作。MinGW占用内存、硬盘空间都比较少，能够链接到任意软件，但它对POSIX规范的实现没有Cygwin库完备。

Red Hat规定，Cygwin库遵守GNU通用公共许可证，但也可以跟符合开源定义的自由软件链接。Red Hat另有价格不菲的许可协议，这样使用Cygwin库的专属软件，就可以进行再发布。

用户可以通过Cygwin Mailing Lists，订阅若干个Cygwin相关的邮件列表。

 历史 
Cygwin始于1995年，最初作为Cygnus工程师Steve Chamberlain的一个项目。当时Windows NT和Windows 95将COFF作为目标代码，而GNU已经支持x86和COFF，以及C语言库newlib。这样至少在理论上，可以将GCC重定向，作为交叉編譯器，从而产生能在Windows上运行的可执行程序。在后来的实践中，这很快实现了。

接下来的问题是如何在Windows系统中引导编译器，这需要对Unix的足够模拟，以使Autoconf的shell script可以运行，这样就用到像bash这样的shell，进而需要Fork和標準串流。Windows含有类似的功能，所以Cygwin库只需要进行翻译调用、管理私有数据，比如文件描述符。

1996年后，由于看到cygwin可以提供Windows系统上的Cygnus嵌入式工具（以往的方案是使用DJGPP），其他工程师也加入了进来。特别吸引人的是，Cygwin可以实现三路交叉编译（three-way cross-compile），例如可以在Sun工作站上构建，如此就形成Windows-x-MIPS 交叉编译器，这样比单纯在PC上编译要快不少。1998年起，Cygnus开始将Cygwin包作为产品来提供。

 参见 
 Cygwin/X是运行在Cygwin上，实现X11的自由软件。
 MinGW，将GNU的开发工具，移植到Windows。
 适用于Linux的Windows子系统 (WSL), 微软出的产品，是一个为在Windows 10和Windows Server 2019上能够原生运行Linux二进制可执行文件（ELF格式）的兼容层。目的是取代Windows Services for UNIX。

 Windows Services for UNIX，微软出的产品，类似于Cygwin，运行速度比较好，但未来版本不会应用在桌面系统中。
 CoLinux，运行Linux程序的另一方案，在Windows上运行自身的Linux。

 参考资料 

 外部链接 

 Cygwin主页
 Cygwin FAQ
 Cygwin程序列表
 Cygwin page on 
 CYGNOME = cygwin + GNOME
 KDE-cygwin cygwin + KDE
 unxutils、 GnuWin32：两个类似的项目，将UNIX工具移植到Windows，但不使用模拟层。

Category:兼容层
Category:程序设计工具
Category:自由編譯器與直譯器
Category:自由仿真软件
Category:用C編程的自由軟體
Category:红帽公司
Category:系統管理
Category:Windows独占自由软件