MinGw與Cygwin的區別

MinGW相比CygWin/gcc來說,更加貼近win32。由於它幾乎支持全部的Win32API。它所鏈接的程序,不須要任何第三方庫便可運行。
CygWin/gcc,其實這是兩個東西。CygWin是一個讓Windows擁有Unix-like環境的軟件。而gcc就是安裝在CygWin上的編譯器。
CygWin/gcc與MinGW的最大區別在於:使用CygWin/gcc能夠在Windows下調用unix-like的API,(如 fork,spawn,signals,select,sockets等)。也就是說Cygwin是運行在Windows下的,可是她使用的是Unix- like系統的函數和思想。因爲這個區別,致使的結果就是用CygWin/gcc編譯出來的程序能夠無縫的運行在*nix環境下。可是若是調用了unix 特有的API函數,在windows環境下不能正常運行,若是想在windows下正常運行的,就必須依賴cygwin1.dll,速度上會有些影響。
說白了,若是你是想在windows環境下開發linux運行程序,那麼CygWin/gcc是你的不二之選。
而若是你想開發的是windows運行程序,而且追求速度,那麼兩者相比而言,MinGW是更好的選擇
linux

MinGWwindows

是指只用自由軟件來生成純粹的Win32可執行文件的編譯環境,它是Minimalist GNU on Windows的略稱。詳情請參考<http://www.mingw.org>。

這裏的「純粹」是指「使用msvcrt.dll的應用程序」。沒法使用MFC (Microsoft Foundation Classes)。

MinGW:一個可自由使用和自由發佈的Windows特定頭文件和使用GNU工具集導入庫的集合,容許你生成本地的Windows程序而不須要第三方C運行時庫。

MinGW,即 Minimalist GNU For Windows。它是一些頭文件和端口庫的集合,該集合容許人們在沒有第三方動態連接庫的狀況下使用 GCC(GNU Compiler C)產生 Windows32 程序。  
在基本層,MinGW 是一組包含文件和端口庫,其功能是容許控制檯模式的程序使用微軟的標準C運行時間庫(MSVCRT.DLL),該庫在全部的 NT OS 上有效,在全部的 Windows 95 發行版以上的 Windows OS 有效,使用基本運行時間,你可使用 GCC 寫控制檯模式的符合美國標準化組織(ANSI)程序,可使用微軟提供的 C 運行時間擴展。該功能是 Windows32 API 不具有的。下一個組成部分是 w32api 包,它是一組可使用 Windows32 API 的包含文件和端口庫。與基本運行時間相結合,就能夠有充分的權利既使用 CRT(C Runtime)又使用 Windows32 API 功能。  

MinGW 官方網站爲
http://www.mingw.org
實際上 MinGW 並非一個 C/C++ 編譯器,而是一套 GNU 工具集合。除開 GCC (GNU 編譯器集合) 之外,MinGW 還包含有一些其餘的 GNU 程序開發工具 (好比 gawk bison 等等)。
開發 MinGW 是爲了那些不喜歡工做在 Linux(FreeBSD) 操做系統而留在 Windows 的人(好比我)提供一套符合 GNU 的 GNU 工做環境。
(此前的 cygwin 雖然也是 GNU 的 Windows 移植,可是 cygwin 是有版權的,而不是 GNU。)
因此,使用 MinGW 咱們就能夠像在 Linux 下同樣使用 GNU 程序開發工具。

GCC 就是 MinGW 的核心所在,GCC 是一套支持衆多計算機程序語言的編譯系統,並且在語言標準的實現上是最接近於標準的。而且 GCC 幾乎能夠移植到目前全部可用的計算機平臺。(個人電腦上就還裝有 DevKitPro,裏面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 自己不像 VC 那樣擁有 IDE 界面(在 Windows 上也存在 Dev C++ 之類的支持 MinGW 編譯器的 IDE)。源代碼編輯你能夠選用任何你喜歡的文本編輯器(聽說微軟的開發人員包括 VC 的開發都不用 VC 所帶的 IDE 編輯器,而是選用 GNU 的 VIM 編輯器)。而後使用 make 等工具來進行軟件項目的編譯、連接、打包乃至發佈。而像 cvs(svn) 源代碼版本控制工具可讓世界上任何一個角落的人均可以參與到軟件項目中來。

關於 MFC,微軟基礎庫類,這個隨 VC++ 攜帶的一個源代碼公開的開發包,和其餘 Windows 程序開發包是同樣的。若是有 VC++ 的受權,你徹底可使用 MFC 的源代碼,也就是你使用 GCC 來編譯 MFC 程序是徹底能夠的。
固然,GNU 下也不少 Windows 程序開發包,甚至有一些是支持跨平臺使用的。不只僅能夠直接把源代碼編譯爲 Windows 程序,也能夠不經修改編譯爲其餘操做系統的圖形程序。
不過 GNU 下,最流行的圖形界面開發庫是 GTK+。GTK+ 也能很好的運行在 Windows 平臺(好比 GIMP 和 Gaim)。
整體說來,使用 MinGW 就是 GNU。
api

--------------------------------------------------------------bash

cygwinsocket

是一個在windows平臺上運行的unix模擬環境,是cygnus solutions公司開發的自由軟件(該公司開發了不少好東西,著名的還有eCos,不過現已被Redhat收購)。它對於學習unix/linux操做環境,或者從unix到windows的應用程序移植,或者進行某些特殊的開發工做,尤爲是使用gnu工具集在 windows上進行嵌入式系統開發,很是有用。隨着嵌入式系統開發在國內日漸流行,愈來愈多的開發者對cygwin產生了興趣。

cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們可以生成並解釋win32的目標文件。而後,他們要把這些工具移植到 windows平臺上去。一種方案是基於win32 api對這些工具的源代碼進行大幅修改,這樣作顯然須要大量工做。所以,他們採起了一種不一樣的方法——他們寫了一個共享庫(就是cygwin dll),把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在裏面,也就是說,他們基於 win32 api寫了一個unix系統庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫鏈接到一塊兒,就可使用unix主機上的交叉編譯器來生成能夠在 windows平臺上運行的工具集。以這些移植到windows平臺上的開發工具爲基礎,cygnus又逐步把其餘的工具(幾乎不須要對源代碼進行修改,只須要修改他們的配置腳本)軟件移植到windows上來。這樣,在windows平臺上運行bash和開發工具、用戶工具,感受好像在unix上工做。
編輯器

注:
VM是虛擬多個,而Cygwin是同時使用Windows和UNIX。
svn

相關文章
相關標籤/搜索