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,但不使用模擬層。