cygwin和mingw的区别
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。在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是不是以后的編譯性能會提高很多呢?有機會一定要測試一下了,呵呵。
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的做法.
?
總結
以上是生活随笔為你收集整理的cygwin和mingw的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Modern OpenGL】纹理 Te
- 下一篇: 工信部通报!84款APP侵害用户权益:每