cygwin和wsl的區別


cygwin和wsl的區別

用過cygwin、wsl、Linux,寫過幾篇知識分享,來答一波。

關於cygwin,你的理解是對的。cygwin項目是基於win32 API在用戶態模擬UNIX,即cygwin核心——cygwin1.dll,由cygwin1.dll提供POSIX API,並基於cygwin1.dll移植了大量GNU、BSD的軟件包,這些軟件包的源碼在cygwin環境中重新編譯的時候,都會默認鏈接到cygwin1.dll,因此編譯的結果仍然是Windows PE格式,在運行時依賴cygwin1.dll。cygwin本身無法支持Linux ELF格式二進制程序。

關於wsl,對於第一代wsl(wsl1),微軟是在運行時將Linux System Call翻譯為NT API調用,以此來直接運行Linux ELF格式文件,是在內核態兼容Linux二進制程序,可以說是相當黑科技了。可能這個大坑微軟填不下去了,2019年推出了WSL2,徹底拋棄了上一代運行時翻譯的路線,干脆把Linux內核放到虛擬機里了,這個虛擬機十分輕量以至於不能明顯感受到,虛擬機的路線相對就平淡無奇了。

總結起來,cygwin是在用戶態提供類UNIX核心,在軟件源碼層實現兼容,源碼需要重新編譯並與cygwin1.dll鏈接,無法支持Linux二進制程序;WSL1是運行時翻譯Linux系統調用,在軟件二進制層就兼容Linux二進制程序,WSL2可以看成虛擬機+Linux發行版。Cygwin和WSL與Windows都有較好的互操作性。

更多有關cygwin、mingw、msys內容,見拙作。

silaoA:Cygwin系列(三):盤點與Cygwin相似和相反的項目zhuanlan.zhihu.com圖標silaoA:Cygwin系列(一):Cygwin是什么zhuanlan.zhihu.com圖標silaoA:微軟WSL——Linux桌面版未來之光zhuanlan.zhihu.com圖標silaoA:偽碼人專欄目錄導航(持續更新...)zhuanlan.zhihu.com圖標


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM