我似乎无法理解两者之间的区别。
似乎一个(GNUWin32
)是一个位于窗口顶部的图层(如MSYS
)和
其他(cygwin)是别的东西(?)
这是什么意思?我何时会使用一个而不是另一个?他们都适合同样的事情吗?
我想将它主要用于git,但是希望保持我的选择开放以便学习和做所有事情* nixy。
还有其他工具吗? msysgit
会更适合这个吗?
是否有任何资源能够详尽地解决所有这些* nix平台的差异?
答案 0 :(得分:35)
Cygwin是一个库,致力于使UNIX程序能够在Windows系统上进行编译和运行,只需极少或不需要修改,以及使用此库编译的一整套打包的UNIX工具和应用程序。它几乎是Windows的完整包装器。它包括一个X服务器和许多你可以在Linux发行版中找到的程序。对于想要在Windows中学习或使用UNIX命令行的人来说非常棒。
MSYS主要是使用MinGW编译器在Windows系统上构建GNU样式包(带configure
等)所需的UNIX工具的一个端口。它使用Cygwin库的一个变体来牺牲一些兼容性以提高效率,并且更适合Windows。
GnuWin32只是Windows的一些GNU工具的端口。与MSYS一样,它使用msvcrt.dll
,以及一个额外的库来提供一些UNIX兼容性功能。其主要目的似乎是允许Windows程序和批处理文件直接使用某些GNU程序和库。
在大多数情况下,它们都在Windows上提供UNIX程序,但存在许多细微差别,包括:
至于git,可以使用Cygwin - 这个版本可以在Windows目录中使用(可以在/cygdrive
下访问)。另外,如上所述,有msysgit。
答案 1 :(得分:0)
Michael Slade是正确的。我想谈谈典型的使用环境。
出于实际原因,我将gnuwin用作仅与POSIX环境远程相关的东西的轻量级后端,而cygwin则更像是成熟的POSIX,甚至是一个非常讨厌的环境。
在安装许多工具时,gnuwin也会变得肿,因为可执行文件通常使用静态链接库。另一方面,Cygwin提供了大量的动态库和相当小的可执行文件。因此,如果您只需要几个可执行文件,则gnuwin需要更少的资源。如果您需要复杂的环境,那么cygwin会更高效。
gnuwin通常也有些过时,提供的软件很少,没有软件包/更新管理器。这是一个基本的外壳环境。没有ssh,没有gcc,vim,没有perl,没有sql-您可以从其他来源获得这些信息,但是很难预测它们如何协作。 Cygwin解决了所有上述问题。
换句话说,gnuwin非常适合偶尔使用的安装程序,因为它只将du,查找和排序放在$ PATH中。要进行一些真正的POSIX工作,请使用cygwin。
我曾经有第二个Linux工作站,然后在Windows系统旁边运行一个Linux VM。 Cygwin使它们过时了。与专用计算机或VM相比,这足以处理很多事情,同时节省大量资源。