以前一直使用本地gcc for windows unix for windows的軟件,這些軟件都是已經編譯好的,可以直接在Windows下運行的,而且如果在環境變量中添加了,就可以在cmd中直接使用,和linux下差不多,但還是有點區別
網上偶然看到了
msys2的這個軟件包,就去了解了。
區別如下:
這個是https://blog.zengrong.net/post/cygwin_and_mingw/網站上面摘錄的,可見我們太長使用的mingw,其實僅僅是仿真linux環境中的一種方式,而且是比較古老的方式了,目前來看,msys2更新比較多,因此就嘗試了。
特點 | Cygwin | MinGW/MSYS | MSYS2 |
---|---|---|---|
是否GNU | 否 | 是 | 是 |
更多軟件支持? | 支持絕大多數的 GNU 軟件 | 支持常用軟件,git、Vim等軟件需要獨立支持(詳細介紹見下方) | 支持大多數 GNU 軟件 |
更類Linux? | Cygwin在Windows中就好像Wine在Linux中 | 實現了Bash等主要的Linux程序 | 原生64/32bit支持 |
GCC編譯 | 內含MingGW32交叉編譯功能,既支持依賴cygwin1.dll的程序編譯,也支持獨立的Windows程序編譯;可以直接編譯Linux下的應用程序 | 支持獨立的Windows程序編譯 | 支持獨立的Windows程序編譯 |
中文支持 | 直接支持中文顯示和輸入法 | 需要配置才能支持中文顯示和輸入,刪除一個中文字符需要刪除2次 | 支持中文顯示和輸入法,中文幫助系統和中文提示(部分軟件) |
運行速度 | 慢 | 快 | 快 |
百度百科上面解釋:
MSYS2 (Minimal SYStem 2) 是一個MSYS的獨立改寫版本,主要用於 shell 命令行開發環境。同時它也是一個在Cygwin (POSIX 兼容性層) 和 MinGW-w64(從"MinGW-生成")基礎上產生的,追求更好的互操作性的 Windows 軟件。
-
安裝方便
-
自帶 pacman 管理,可以使用 pkgtool 來 makepkg
-
較快的源速度(可以修改源地址)
-
自帶軟件和庫較全而且比較新
-
使用mingw-w64工具鏈,可以編譯32位或64位代碼(需要自行安裝)
-
中文支持好,可以直接輸入和瀏覽中文目錄
可以看出,msys2還移植了arch的軟件管理包,pacman,這個就是不同的linux發行本,不同的軟件管理包一樣,Ubuntu系列是apt,還有更加新的,具體忘記了,rethat是yum等。使用方式大同小異。
如果不願意使用 Cygwin 或者 MinGW 這種 ”重型“ 的 port,又喜歡 unix 下的工具鏈,那么可以嘗試一下下面幾個原生移植工具集:
- GNU utilities for Win32
- CoreUtils for Windows 或者 完整的 package
- dd for windows
- Unix ports - WHICH, TEE & CUT
以前我還使用了上面的幾個軟件,上面幾個是軟件,和上面三個大平台是有區別的。
Cygwin 與 MinGW/MSYS/MSYS2 實際上就是在windows下仿真了一個linux平台
很多文件目錄的結構都差不多
總結
(https://blog.zengrong.net/post/msys_mingw_and_cygwin_gcc/)
MinGW是windows版本的gcc集合,不需要依賴中間層。
MSYS是小型的linux的環境的模擬,可以與MinGW結合來模擬linux環境下使用MinGW的gcc。
Cygwin是功能強大的linux環境,由於有cygwin1.dll實現了底層的windows api到linux api的轉化。所以在Cygwin里開發就相當於在linux上開發,對於開發人員來說就相當於調用linux類型的api,所以這樣開發的程序也可以直接移植到linux上。但是如果這樣的程序要在windows上執行的話,運行時必須要cygwin1.dll支持。
根據以上的分析,如果在windows開發linux跨平台的程序,linux模擬器Cygwin以及所包含的gcc是很好的選擇,但是開發的程序必須依賴一個cygwin1.dll。如果你只是想在windows下使用gcc編譯器也不想依賴其他的dll,mingw是很好的一個選擇。
另外:https://www.cnblogs.com/tshua/p/5932501.html
MSYS2,由於 MinGW 萬年不更新,MSYS 更是,Cygwin的許多新功能 MSYS 沒有同步過來,於是 Alex 等人建立了新一代的 MSYS 項目。仍然是 fork 了 Cygwin(較新版),但有個更優秀的包管理器 pacman,有活躍的開發者跟用戶組,有大量預編譯的軟件包(雖然肯定沒有Cygwin多)……對於不喜歡龐大的 Cygwin 的用戶而言,推薦試試 msys2。
區別(小結):Cygwin是模擬 POSIX 系統,源碼移植 Linux 應用到 Windows 下;MinGW 是用於開發 Windows 應用的開發環境。
聯系:均提供了部分 Linux 下的應用,多跑在 Windows 上;MinGW 作為 Cygwin 下的軟件包,可以在 Cygwin 上運行。