cygwin/gcc与MinGW
??????? cygwin/gcc完全可以和在linux下的gcc劃等號(hào),這個(gè)從boost庫的劃分中就可以看出來端倪,cygwin下的gcc和linux下的gcc使用的是相同的Toolsets。
??????? 所以完全可以和linux一起同步更新gcc版本,而不用擔(dān)心有什么問題,并且在cygwin/gcc下做的東西(不用win32的)可以無縫的用在linux下,沒有任何問題。是在windows下開發(fā)linux程序的一個(gè)很好的選擇。但是在cygwin/gcc下編譯出來的程序,在windows下執(zhí)行必須依賴cygwin1.dll,并且速度有些慢,如果不想依賴這個(gè)東西的話,必須在gcc的編譯選項(xiàng)中加入-mno-cygwin。加入這個(gè)選項(xiàng)gcc編譯器就會(huì)自動(dòng)的選擇安裝cygwin/gcc時(shí)安上的MinGW,這個(gè)MinGW就是gcc的一個(gè)交叉編譯。
注:交叉編譯是嵌入式開發(fā)過程中的一項(xiàng)重要技術(shù),它的主要特征是某機(jī)器中執(zhí)行的程序代碼不是在本機(jī)編譯生成,而是由另一臺(tái)機(jī)器編譯生成,一般把前者稱為目標(biāo)機(jī),后者稱為主機(jī)。采用交叉編譯的主要原因在于,多數(shù)嵌入式目標(biāo)系統(tǒng)不能提供足夠的資源供編譯過程使用,因而只好將編譯工程轉(zhuǎn)移到高性能的主機(jī)中進(jìn)行。
??????? MinGW作為gcc在windows上的一個(gè)實(shí)現(xiàn),由于不像cygwin的gcc在一個(gè)模擬linux上運(yùn)行,所以相當(dāng)一部分linux的工具不能夠使用,不過現(xiàn)在已經(jīng)有Msys這個(gè)模擬unix的shell,可以解決很多的問題,不過沒有cygwin好用,而cygwin/gcc的no-cygwin選項(xiàng)又依賴于MinGW的支持,所以更新的更慢的,現(xiàn)在只是到3.3.3。在MinGW下也是可以升級(jí)gcc的,不過需要使用msys。升級(jí)方法和在cygwin&linux下差不多,就不再羅嗦了。不過就我的升級(jí)經(jīng)驗(yàn)來看好像都不太順利。具體深入的測(cè)試,我也沒有時(shí)間做了。
也是可以讓cygwin的最新安裝的gcc支持no-cygwin,需要再做一遍交叉編譯,但是我不會(huì)做,只好算了,呵呵,也許那一天我把這個(gè)搞定,再開一個(gè)貼吧。
??????? 根據(jù)以上的分析,如果在windows開發(fā)linux程序,cygwin是很好的選擇。如果你開發(fā)的程序不介意有一個(gè)cygwin1.dll的話,也是可以選擇cygwin的。如果你是想開發(fā)windows下的程序,還要必須用gcc的話,MinGW是很好的一個(gè)選擇。但是在windows下有太多的編譯器了,bc,vc,intel c.....
??????? 順便說就題外的話,據(jù)說gcc4.0.0性能有很大的提升,如果我升級(jí)完gcc4后,再編譯一把gcc4是不是以后的編譯性能會(huì)提高很多呢??
?一個(gè)技巧:如何知道當(dāng)前版本的gcc的安裝配置,用命令:gcc -v就可以了.
總結(jié)
以上是生活随笔為你收集整理的cygwin/gcc与MinGW的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。