Cygwin 是什么?-收购-它主要由 Red Hat 和其下属社区负责维护
Cygwin 是什么?
Cygwin 是一种在 Windows 上运行的类似 UNIX 的模拟环境,由 Cygnus Solutions 公司开发,是一种开源软件。尽管 Cygnus Solutions 公司现在已被 Redhat 收购,但 Cygwin 依然是一个非常有用的工具。尤其是在 Windows 上使用 GNU 工具集进行嵌入式系统开发时,Cygwin 的作用尤为突出。随着嵌入式系统开发在国内的流行,越来越多的开发者开始关注 Cygwin。
Cygwin 提供了一系列模拟 UNIX 的 DLL 和软件包,在 Windows XP SP3 及以上版本上运行良好。它主要由 Red Hat 和其下属社区负责维护。
工作机制
Cygwin 的工作原理可以追溯到 Cygnus 公司最初改进了 gcc、gdb、gas 等开发工具,使它们能够在 Windows 上生成和解释 win32 的目标文件。由于直接修改源代码的工作量巨大,Cygnus 公司选择了一种不同的方法:编写了一个共享库(Cygwin DLL),它封装了 Win32 API 中缺失的 Unix 风格调用(如 fork、spawn、signals、select、sockets 等),从而在 Win32 API 上创建了一个 Unix 系统库的模拟层。
这样,只需要将这些工具的源代码与这个共享库连接起来,就可以使用 Unix 主机上的交叉编译器来生成在 Windows 上运行的工具集。基于这些移植到 Windows 平台上的开发工具,Cygnus 公司逐步将其他工具(几乎不需要修改源代码,只需修改配置脚本)移植到 Windows 上。因此,在 Windows 上运行 bash 和开发工具、用户工具,感觉就像在 Unix 上工作一样。
延伸阅读
组成模块
Cygwin 包括了一套库,该库在 Win32 系统下实现了 POSIX 系统调用的 API;还包括了一套 GNU 开发工具集(如 GCC、GDB),可以用于软件开发;还有一些 UNIX 系统下的常见程序。2001 年,Cygwin 还增加了 X Window System。
此外,还有一个名为 MinGW 的库,它可以与 Windows 本地的 MSVCRT 库(Windows API)一起工作。MinGW 占用内存和硬盘空间较少,可以链接到任意软件,但它对 POSIX 规范的实现没有 Cygwin 库完备。
特性 | Cygwin | MinGW |
---|---|---|
内存/硬盘空间占用 | 更多 | 较少 |
对 POSIX 规范的实现 | 更完备 | 不如完备 |
不过,Cygwin 不支持 Unicode。实际上,除了当前 Windows 系统以及 OEM codepages(例如,一个俄语用户的代码页是 CP1251 和 CP866,而不能是 KOI8-R、ISO/IEC 8859-5、UTF-8 等),Cygwin 对其他字符集都不支持。不过,Cygwin 的较新版本可以通过自带终端模拟器的设置来满足显示 UTF-8 和更多代码页的功能。