原文作者:gentle_zhou
原文链接:https://bbs.huaweicloud.com/blogs/408674
最近在和客户交换的时候,始终认为客户的研发环境就是 windows 7,直到和对面的研发团队交换的时候,失去的反馈是在 windows 7 零碎上装置了 Cygwin,和仅仅是 Windows 零碎并不统一。
那么什么是 Cygwin?
Cygwin 是一个反对在 Windows 平台上运行的 Unix 环境,它最早的版本于 1995 年 10 月公布,最新的一个稳固版本 3.4.6 则于 2023 年 2 月 14 日公布。其指标是让 Windows 用户能够应用 GNU 和开源工具,如 bash, gcc, less 等。然而,Cygwin 并不是一个反对运行原生 Linux 利用或者让 Windows 利用感知 Unix 性能的工具;它实际上是一个大型的 GNU 和开源工具汇合, 反对在 windows 上提供相似于 Linux distribution 版本的性能 (Linux_distribution 的指标是让用户在不同的硬件平台上应用相似于 Unix 的性能和体验),容许用户在 Windows 零碎上运行许多本来只能在 Unix 或 Linux 零碎上运行的软件。
Cygwin 由两局部组成:
- 一个 C 规范库模式的动态链接库 (DLL,dynamic-link library),作为 POSIX API 的兼容层。
- 一个提供相似 unix 外观和操作感觉的被宽泛应用的软件工具和应用程序汇合。
Cygwin 的形象层 DLL (cygwin1.dll) 用于将局部 Posix(可移植操作系统接口(Portable Operating System Interface of UNIX)调用转换成 Windows 的 API 调用,让用户能够在 Windows 零碎上编译和运行一些基于 Posix 规范的源代码,而不须要批改或者从新编写。但须要留神,Cygwin 不是一个完全符合 Posix 规范的环境,它只实现了局部 Posix API,并且其中有一些是与 Windows 零碎自身的 API 有抵触和限度的。同时,因为该 DLL 须要额定加载,可能会影响 Windows 零碎的性能和稳定性,并且可能会与一些 Windows 程序产生兼容性问题。
Cygwin 环境以后有两个版本; 残缺的 64 位版本和精简的 32 位版本(后者正在缓缓被淘汰)。再深刻点说,Cygwin 是由一个库和一个 GNU 开发工具链组成的;这个库实现了 POSIX 零碎调用 API 的性能,它能够把局部 POSIX 调用转换成 Windows 零碎调用,从而反对用户在 Windows 平台上能够运行大量与 Unix 零碎相似的应用程序;而这个 GNU 开发工具链(包含 GCC 和 GDB)则反对让用户进行软件开发。
在 Cygwin 上操作与在 Windows 上操作有什么区别?
- Cygwin 提供了一个易用的命令行界面,让用户能够应用 Unix 格调的命令和脚本来操作文件和程序。而在 Windows 上操作,通常须要应用图形界面或者 PowerShell 等工具。
- Cygwin 容许用户在 Windows 零碎上运行许多本来只能在 Unix 或 Linux 零碎上运行的软件,如 Perl, Ruby, R 等。而在 Windows 上操作,通常须要装置特定的版本或者应用模拟器等形式能力反对。
- Cygwin 提供了一个兼容性层 DDL,让用户能够在 Windows 零碎上编译和运行一些基于 Posix 规范的源代码,而不须要批改或者从新编写。而在 Windows 上操作,通常须要应用特定的编译器或者批改源代码以适应 Windows 的 API。
- 在两个环境里的编译器也是不同的。在 Cygwin 中,会提供 GNU 开发工具链(包含 GCC 和 GDB),用于编译和调试 C 和 C ++ 程序;这些编译器遵循 GNU 规范和扩大。而 Windows 提供了 Visual Studio 等开发工具,用于编译和调试 C 和 C ++ 程序,这些编译器遵循 Microsoft 规范和扩大。
参考链接
- https://bbs.huaweicloud.com/community/myblog
- [https://www.cygwin.com/]()
- [https://en.wikipedia.org/wiki/Linux_distribution]()