2012-05-23 38 views
21

我似乎無法弄清楚兩者之間的區別。GNUWin32和cygwin之間的區別

看來,一個(GNUWin32)是在Windows之上的層(如MSYS)和
其他(Cygwin的)是另一回事(?)

這是什麼意思?我什麼時候會用另一種?他們都適合同一件事嗎?

我想主要用於git,但希望保持我的選項對於學習和做所有事* nixy。

有沒有其他工具呢? msysgit會更適合這個嗎?
是否有任何資源詳盡地探討了所有這些* nix平臺的差異?

回答

34

Cygwin是一個努力使UNIX程序能夠在很少或不需要修改的情況下編譯和運行在Windows系統上的庫,以及使用該庫編譯的一整套打包的UNIX工具和應用程序。它幾乎是一個圍繞Windows的完整包裝。它包含一個X服務器以及您可以在Linux發行版中找到的很多程序。對於想要在Windows中學習或使用UNIX命令行的人來說,這非常棒。

MSYS大多的必要建立GNU風格包(帶configure等)上與MinGW編譯器的Windows系統的UNIX工具的端口。它使用修改後的Cygwin庫的變體來犧牲某些兼容性以提高效率,並且更友善。

GnuWin32只是一些到Windows的GNU工具的端口。像MSYS一樣,它使用msvcrt.dll以及一個額外的庫來提供一些UNIX兼容性功能。它的主要目的似乎是允許Windows程序和批處理文件直接使用一些GNU程序和庫。

在大多數情況下,它們都提供在Windows UNIX程序,但也有許多細微的差別,其中包括:

  • 意圖。 Cygwin適用於想在Windows操作系統上使用UNIX的人。 MSYS適用於想要使用GNU/UNIX構建工具構建Windows程序的人員。 GnuWin32是個人GNU程序和Windows庫的一個端口。
  • 文本文件,特別是行尾。 Cygwin讓你使用CR/LF或LF。 MSYS預計LF行結束。 GnuWin32程序預計CR/LF行結束。
  • 提供的程序。特別是,Cygwin有更多的包,而GnuWin32沒有提供任何shell。

至於git,它可以與Cygwin一起使用 - 該版本可以在Windows目錄中使用(可在/cygdrive下訪問)。另外,如上所述,還有msysgit

+3

這對於MSYS不正確。 MSYS程序基於MSYS DLL,它是Cygwin DLL的一個分支,並且使用特殊的MSYS工具鏈而不是MinGW工具鏈構建。但是,MSYS的目的是通過MinGW工具鏈提供一個類Unix環境來構建本地Windows程序。 – ak2

+4

真棒回答! [** Gow **](https://github.com/bmatzelle/gow/wiki)如何考慮? – qwertymk

+0

不知道,從來沒有用過它。隨意提及它在ansewr。 –