??????? 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。在MinGW下也是可以升級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是不是以后的編譯性能會提高很多呢??
?一個技巧:如何知道當前版本的gcc的安裝配置,用命令:gcc -v就可以了.?
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1476632
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
