Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行类UNIX系统。Cygwin的主要目的是通过重新编译,将POSIX系统上的软件移植到Windows上。
Cygwin 是许多自由软件的集合,最初由 Cygnus Solutions 开发,用于各种版本的 Microsoft Windows 上,运行类 UNIX 系统。Cygwin 的主要目的是通过重新编译,将 POSIX 系统上的软件移植到 Windows 上。
Cygwin 移植工作在 Windows NT 上比较好,在 Windows 95 和 Windows 98 上,相对差劲一些。目前 Cygwin 由 Red Hat 等负责维护。
简介
Cygwin 包括了一套库,该库在 Win32 系统下实现了 POSIX 系统调用的 API;还有一套 GNU 开发工具集(比如 GCC、GDB),这样可以进行简单的软件开发;还有一些 UNIX 系统下的常见程序。2001 年,新增了 X Window System。
另外还有一个名为 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 包作为产品来提供。