1、使用區別:
cygwin/gcc和mingw都是gcc在windows下的編譯環境,但是它們有什麼區別,在實際工作中如何選擇這兩種編譯器。
cygwin/gcc完全可以和在linux下的gcc化做等號,這個可以從boost庫的劃分中可以看出來端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的toolsets。
所以完全可以和linux一起同步更新gcc版本,而不用擔心問題,並且在cygwin/gcc做的東西(不用win32的)可以無縫的用在linux下,沒有任何問題。是在windows下開發linux程式的乙個很好的選擇。但是在cygwin/gcc下編譯出來的程式,在windows執行必須依賴 cygwin1.dll,並且速度有些慢,如果不想依賴這個東西的化,必須在gcc的編譯選項中加入-mno-cygwin。加入這個選項其實gcc編譯器就會自動的選擇在安裝cygwin/gcc時安上的mingw,這個mingw就是gcc的乙個交叉編譯。
對於mingw作為gcc在 windows上的乙個實現,由於不像cygwin的gcc在乙個模擬linux上執行,同時相當一部分linux的工具不能夠使用,不過現在已經有 msys這個模擬unix的shell,可以解決很多的問題,不過沒有cygwin好用,而cygwin/gcc的no-cygwin選項又依賴於 mingw的支援,所以更新的更慢的,現在只是
到3.3.3。在min
gw下也是可以公升級gcc的,不過需要使用msys。公升級方法和
在cygwin和 linux下差不多,就不再羅嗦了。不過就我的公升級經驗來看好像都不太順利。具體深入的測試,我也沒有時間做了。
也是可以讓cygwin的最新安裝的gcc支援no-cygwin,需要再做一遍交叉編譯,但是我不會做,只好算了,呵呵,也許那一天我把這個搞定,再開乙個貼吧。
根據以上的分析,如果在windows開發linux程式,cygwin是很好的選擇。如果你開發的程式不介意有乙個cygwin1.dll的話,也是可以選擇cygwin的。如果你是想開發windows下的程式,還要必須用gcc的化,mingw是很好的乙個選擇。但是在windows下有太多的編譯器了,bc,vc,intel c.....。
順便說就題外的化,據說gcc4.0.0效能有很大的提公升,如果我公升級完gcc4後,再編譯一把gcc4是不是以後的
編譯效能會提高很多呢?有機會一定要測試一下了,呵呵。
2、基本區別:
unix下編譯通過的c**,在
win32
下編譯是不能通過的 ,當然unix 和
win32
的api都是符合標準c,也就是說,大多數函式呼叫在unix和
win32
下是相同的.但是,unix有自己一些獨特的api
(如fork,spawn,signals,select,sockets等),如果**中使用了這些api,在
win32
下當然找不到對應的庫.
但是,這些api的功能在
win32
中也能實現,也許你已經發現了乙個能讓window編譯unix風格**的方法:
1.修改編譯器,讓
window下的
編譯器把諸如fork的呼叫翻譯成等價的形式--這就是mingw的做法.
2.修改庫,讓window提供乙個類似unix提供的庫,他們對程式的介面如同unix一樣,而這些庫,當然是由win32的api實現的--這就是cygwin的做法.
MinGW與Cygwin的關係與差別
part1 共同點 cygwin gcc和mingw都是gcc在windows下的實現。gcc 它是一款原來只能在linux系統上使用的開源c語言編譯器,後來移植到了windows作業系統上 以mingw和cygwin為代表 part2 不同點 mingw是windows上gcc的乙個實現,loca...
MinGW和Cgywin的區別
起初,gcc是用於unix,unix like系統的編譯器。不過,現在windows下也出現了gcc的穩定移植版。如今,在windows下比較流行的gcc移植版主要有三個。他們是 mingw,cygwin和djgpp。雖然,djgpp是應用於dos系統的,考慮到windows對dos的相容,所以也將...
GCC和MinGW的區別
cygwin gcc和mingw都是gcc在windows下的編譯環境,但是它們有什麼區別,在實際工作中如何選擇這兩種編譯器。cygwin gcc完全可以和在linux下的gcc化做等號,這個可以從boost庫的劃分中可以看出來端倪,cygwin下的gcc和linux下的gcc完全使用的是相同的to...