我似乎无法理解这两者之间的区别。
看起来(GNUWin32
)是Windows上的一个层(就像MSYS
),而另一个(cygwin)则不同(?)。
那是什么意思?什么时候使用其中之一?它们都适用于相同的事情吗?
我想主要用于git,但希望保持我的学习和执行所有*nixy事物的选择。
是否有另一种工具可供使用? msysgit
是否更适合此目的?是否有任何资源详细介绍所有这些*nix平台的差异?
我似乎无法理解这两者之间的区别。
看起来(GNUWin32
)是Windows上的一个层(就像MSYS
),而另一个(cygwin)则不同(?)。
那是什么意思?什么时候使用其中之一?它们都适用于相同的事情吗?
我想主要用于git,但希望保持我的学习和执行所有*nixy事物的选择。
是否有另一种工具可供使用? msysgit
是否更适合此目的?是否有任何资源详细介绍所有这些*nix平台的差异?
Cygwin是一个库,旨在使UNIX程序能够在Windows系统上编译和运行,最少或无需修改,并提供一套使用此库编译的综合包 UNIX 工具和应用程序。它几乎是Windows的完整封装,包括X服务器和您可以在Linux发行版中找到的许多程序。这非常适合想要在Windows上学习或使用UNIX命令行的人。
MSYS主要是将构建GNU风格软件包(带有configure
等)所必需的UNIX工具移植到Windows系统中,使用MinGW编译器。它使用了Cygwin库的变体,为了效率而牺牲了一些兼容性,更加友好于 Windows。
GnuWin32仅是将一些GNU工具移植到Windows上的端口。与MSYS一样,它使用msvcrt.dll
以及额外的库来提供一些UNIX兼容函数。它的主要目的似乎是允许Windows程序和批处理文件直接使用一些GNU程序和库。
它们大多数都在Windows上提供UNIX程序,但包括以下许多微妙的差异:
关于git,它可以在Cygwin中使用 - 这个版本可以在Windows目录下使用(可以在/cygdrive
下访问)。另外,正如提到的那样,还有msysgit。
Michael Slade是正确的。我想谈一下典型的使用环境。
出于实际原因,我使用gnuwin作为轻量级后端,仅与POSIX环境有关的东西,而cygwin则更像是一个完整的POSIX环境,甚至是非常类Unix的环境。
此外,当安装大量工具时,gnuwin往往会变得臃肿,因为可执行文件经常使用静态链接库。另一方面,Cygwin提供了大量动态库和相对较小的可执行文件。因此,如果您只需要少量可执行文件,则gnuwin需要更少的资源。如果需要复杂的环境,则cygwin将更有效。
gnuwin也经常略微过时,提供少量软件,没有软件包/更新管理器。它是一个基本的shell环境。没有ssh,没有gcc,vim,没有perl,没有sql——您可以从其他来源获取这些内容,但这些内容如何合作很难预测。Cygwin解决了以上所有问题。
换句话说,gnuwin非常适合偶尔的安装程序,只需将du、find和sort放入$PATH中即可。要进行一些真正的POSIX工作,请使用cygwin。
我曾经有一台第二台Linux工作站,然后在我的Windows系统旁边运行了一个Linux虚拟机。Cygwin使它们过时了。与专用计算机或虚拟机相比,它足够好用,可以完成大量的任务,同时节省大量资源。