Cygwin
是提供Windows使用者一個unix-like環境的套件
這個套件將Linux上常用到的system call, tools等porting到windows
Cygwin裡有一個cygwin1.dll模擬了Linux環境所會用到的API.
因此原則上只要有Source code, 在Cygwin底下編譯, 就可以編譯出在Cygwin底下執行的程式
(間接執行在windows上)
MinGW - Minimalistic GNU for Windows
這個套件是從Cygwin1.3.3分支出來, 也是提供Windows使用者一個unix-like環境
但並不像Cygwin一樣多提供一個dll中介,而是直接使用Win32 API.
所以可以把他看做僅是提供一個unix-like shell環境的一支windows程式
其實跟少了IDE介面的Visual studio差不多
兩者的比較
程式執行的效率
由於Cygwin多了一個dll當中介層,因此在Cygwin環境下所產生的程式
僅能在有cygwin1.dll的環境下執行,也由於多了這個dll,相較於MinGW使用原生Win32 API
Cygwin底下編譯出來的程式比在MinGW下編譯出來的程式執行效率來的差
MinGW也由於是直接使用Win32 API,因此編譯出來的程式就可以直接執行,無須額外的dll存在
程式碼移植性
Cygwin因為多了cygwin1.dll模擬了Linux,因此在Linux上開發的程式碼原則上都可以直接
拿來Cygwin上編譯並執行,所以在移植性方面Cygwin比較comfortable
但若Linux的程式碼要拿到MinGW上去編譯,就沒那麼順利了
PS.今天本來想要好好來建置一下Cygwin的環境
結果查了一些資料又看得太入迷了,很常幹這種事