當前位置:編程學習大全網 - 源碼下載 - cygwin和mingw的區別

cygwin和mingw的區別

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是更好的選擇

MinGW

是指只用自由軟件來生成純粹的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。

--------------------------------------------------------------

cygwin

是壹個在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。

  • 上一篇:有誰知道實木家具的壹些具體知識?、
  • 下一篇:怎麽用PHP開發API供其他客戶端調用?
  • copyright 2024編程學習大全網