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