GNUWin32和cygwin之间的区别

qwe*_*ymk 22 linux cygwin msys gnuwin32 msysgit

我似乎无法掌握两者之间的差异.

似乎one(GNUWin32)是一个在windows(如MSYS)之上的层,而
另一个(cygwin)是另一个(?)

那是什么意思?我何时会使用一个而不是另一个?他们都适合同样的事情吗?

我想把它主要用于git,但是想要保持我的选择开放学习和做所有事情*nixy.

还有其他工具吗?会msysgit更适合这个吗?
是否有任何资源能够详尽地解决所有这些*nix平台的差异?

Mic*_*ade 35

Cygwin是一个库,致力于使UNIX程序能够在Windows系统上进行编译和运行,只需很少或不需要修改,以及使用此库编译的一整套打包的UNIX工具和应用程序.它几乎是Windows的完整包装器.它包括一个X服务器和许多你可以在Linux发行版中找到的程序.对于想要在Windows中学习或使用UNIX命令行的人来说,它非常适合.

MSYS主要是configure使用MinGW编译器在Windows系统上构建GNU样式包(带有等)所需的UNIX工具的一个端口.它使用Cygwin库的一个变体来牺牲一些兼容性以提高效率,并且更加适合Windows.

GnuWin32只是Windows的一些GNU工具的一个端口.与MSYS一样,它使用msvcrt.dll了一个额外的库来提供一些UNIX兼容性功能.其主要目的似乎是允许Windows程序和批处理文件直接使用某些GNU程序和库.

在大多数情况下,它们都在Windows上提供UNIX程序,但存在许多细微差别,包括:

  • 意图.Cygwin适用于希望在Windows操作系统上使用UNIX的用户.MSYS适用于想要使用GNU/UNIX构建工具构建Windows程序的人员.GnuWin32是Windows的各个GNU程序和库的端口.
  • 文本文件,尤其是行结尾.Cygwin允许您使用CR/LF或LF.MSYS期望LF线结束.GnuWin32计划期待CR/LF线路结束.
  • 提供的程序.特别是,Cygwin有更多的包,而GnuWin32不提供任何shell.

至于git,它可以在Cygwin中使用 - 这个版本可以在Windows目录中使用(可在下面访问/cygdrive).另外,如上所述,还有msysgit.

  • 真棒的答案![**Gow**](https://github.com/bmatzelle/gow/wiki)如何考虑? (4认同)
  • 关于MSYS,这是不正确的.MSYS程序基于MSYS DLL,它是Cygwin DLL的一个分支,使用特殊的MSYS工具链而不是MinGW工具链构建.但是,MSYS的目的是提供类似Unix的环境,用于使用MinGW工具链构建本机Windows程序. (3认同)
  • 我喜欢和使用cygwin多年,但也必须提防某些陷阱.一个例子:我安装了cygwin,安装了地球下的所有东西,包括它的git.cygwin在我的用户路径中.然后我安装了ruby(Windows安装程序),而不是来自cygwin(甚至不知道它是否可用).但是当ruby试图用cygwin的git安装做一些事情时,事情在路径层面上发生了变化.Rubys和cygwins路径处理无法一起工作.解?从用户路径中删除cygwin,使用msysgit安装并更仔细地查看我的用户搜索路径中的内容. (3认同)