Cygwin
Cygwin是許多自由軟體的集合,最初由Cygnus Solutions開發,用於各種版本的Microsoft Windows上,執行類UNIX系統。Cygwin的主要目的是通過重新編譯,將POSIX系統(例如Linux、BSD,以及其他Unix系統)上的軟體移植到Windows上。Cygwin移植工作在Windows NT上比較好,在Windows 95和Windows 98上,相對差勁一些。目前Cygwin由Red Hat等負責維護。
開發者 | Red Hat等 |
---|---|
首次釋出 | 1995 |
目前版本 | 3.5.4-1[1](2024年8月25日) |
原始碼庫 | |
程式語言 | C/C++ |
作業系統 | Windows |
類型 | 相容層, C標準函式庫 |
授權條款 | GPLv3 |
網站 | www.cygwin.com |
簡介
Cygwin包括了一套庫,該庫在Win32系統下實現了POSIX系統呼叫的API;還有一套GNU開發工具集(比如GCC、GDB),這樣可以進行簡單的軟體開發;還有一些UNIX系統下的常見程式。2001年,新增了X Window System。
Cygwin由兩部分組成:動態連結庫(DLL),以C標準庫的形式作為API相容性層提供POSIX API功能的重要部分,以及提供Unix的大量軟體工具和應用程式樣的外觀和感覺。 [2]
另外還有一個名為MinGW的庫,可以跟Windows本地的MSVCRT庫(Windows API)一起工作。MinGW占用主記憶體、硬碟空間都比較少,能夠連結到任意軟體,但它對POSIX規範的實現沒有Cygwin庫完備。
Red Hat規定,Cygwin庫遵守GNU通用公眾授權條款,但也可以跟符合開源定義的自由軟體連結。Red Hat另有價格不菲的授權條款,這樣使用Cygwin庫的專屬軟體,就可以進行再釋出。
使用者可以通過Cygwin Mailing Lists(頁面存檔備份,存於網際網路檔案館),訂閱若干個Cygwin相關的郵寄清單。
歷史
Cygwin始於1995年,最初作為Cygnus工程師Steve Chamberlain的一個專案。當時Windows NT和Windows 95將COFF作為目的碼,而GNU已經支援x86和COFF,以及C語言庫newlib。這樣至少在理論上,可以將GCC重新導向,作為交叉編譯器,從而產生能在Windows上執行的可執行程式。在後來的實踐中,這很快實現了。
接下來的問題是如何在Windows系統中引導編譯器,這需要對Unix的足夠類比,以使Autoconf的shell script可以執行,這樣就用到像bash這樣的shell,進而需要Fork和標準串流。Windows含有類似的功能,所以Cygwin庫只需要進行翻譯呼叫、管理私有資料,比如檔案描述子。
1996年後,由於看到cygwin可以提供Windows系統上的Cygnus嵌入式工具(以往的方案是使用DJGPP),其他工程師也加入了進來。特別吸引人的是,Cygwin可以實現三路交叉編譯(three-way cross-compile),例如可以在Sun工作站上構建,如此就形成Windows-x-MIPS 交叉編譯器,這樣比單純在PC上編譯要快不少。1998年起,Cygnus開始將Cygwin包作為產品來提供。
參見
- Cygwin/X是執行在Cygwin上,實現X11的自由軟體。
- MinGW,將GNU的開發工具,移植到Windows。
- 適用於Linux的Windows子系統 (WSL), 微軟出的產品,是一個為在Windows 10和Windows Server 2019上能夠原生執行Linux二進制可執行檔(ELF格式)的相容層。目的是取代Windows Services for UNIX。
- Azure Sphere
- Windows Services for UNIX,微軟出的產品,類似於Cygwin,執行速度比較好,但未來版本不會應用在桌面系統中。
- CoLinux,執行Linux程式的另一方案,在Windows上執行自身的Linux。
參考資料
- ^ cygwin 3.5.4-1. 2024年8月25日 [2024年8月27日].
- ^ Cygwin FAQ. cygwin.com. [2021-03-18]. (原始內容存檔於2021-05-07).
外部連結
- Cygwin首頁(頁面存檔備份,存於網際網路檔案館)
- Cygwin FAQ(頁面存檔備份,存於網際網路檔案館)
- Cygwin程式列表Archive.is的存檔,存檔日期2012-12-06
- Cygwin page(頁面存檔備份,存於網際網路檔案館) on Freshmeat.net
- CYGNOME(頁面存檔備份,存於網際網路檔案館) = cygwin + GNOME
- KDE-cygwin(頁面存檔備份,存於網際網路檔案館) cygwin + KDE
- unxutils、 GnuWin32(頁面存檔備份,存於網際網路檔案館):兩個類似的專案,將UNIX工具移植到Windows,但不使用類比層。