我想安装 cygwin,主要是为了运行 gcc 和相关工具链,但在这样做之前,我想先了解一下安装 Cygwin 会如何改变需要预期的 Windows(或 Windows 控制台)的操作。
也许交互根本没有问题。但是,由于 Cygwin(或可选组件)提供了替代 Linux 操作系统和环境功能的功能,我不知道它需要做什么才能提供这些功能。
显然,一些 Cygwin 程序只是在需要时调用的可执行文件。更多需要注意的是:
控制台和 shell,例如:bash:Cygwin 是否提供自己独立的终端?或者提供在 Windows 控制台内运行的命令行可执行文件?或者它是否以某种方式修改了 Windows 命令 shell 的基本操作?
Cygwin 是否安装了始终运行的服务,即使用户没有执行任何与 Cygwin 相关的活动也是如此?或者只是安装了程序仅在需要时调用的 dll(和可执行文件)?
还有其他需要注意的地方吗?谢谢!
答案1
Cygwin 通过提供一个库来工作cygwin1.dll
,该库充当 POSIX 和 Linux API 以及相应的 Windows 功能之间的转换层。这样,它根本不需要修改操作系统。(当然,Cygwin 程序必须编译为本机 Win32 .exe 程序,只需链接到不同的库即可。)
基于终端的程序可以以两种方式运行:它们可以在 Windows 控制台中运行(其中 cygwin1.dll 会自动将打印的类似 VT100 的序列转换为 Windows 控制台 API 函数),也可以在类似 VT100 的终端仿真器(如 MinTTY、URxvt 或 PuTTYcyg)中运行。(Cygwin 通常默认配备前者。)
通常情况下,正常运行不需要服务,除非你安装程序是设计为服务(例如 OpenSSH 服务器守护程序)。
[仅供比较:Interix,又名Unix服务,在较低层工作,通过提供“posix”子系统运行旁边常规 Win32 子系统,直接位于低级“Native”或“NT”API 之上。
不过,不需要修改内核或其他操作系统组件,也不需要安装自定义驱动程序,因为这两种方法只是在用户空间添加了一个转换层。]