Microsoft Visual C++ 與 MinGW

來源:互聯網
上載者:User

這幾天試用wxWidgets,分別用VC6和MinGW5編譯通過,下面是一些記錄。

MinGW:根據我的理解,它是一個Windows下的編譯器(實際上是一系列開發工具)。與Windows下其它編譯器不同的是,MinGW與Linux下廣泛使用的GNU(基本上)完全相容,這意味著,在Linux下如何編譯原始碼,在MinGW中也可以以完全相同的方式編譯。

我個人以為,MinGW的出現是有原因的:有些Linux下的開發人員(比如開源陣營)發布的原始碼通常只提供Linux下的編譯方式,而不提供Windows下的編譯方式(這可能與其不熟悉windows作業系統有關),但確實有不少使用者需要在在Windows下編譯使用此原始碼。這在種情況下,如果Windows使用者想用VC、BC等編譯器編譯該原始碼,必須重寫Makefile(各種編譯器所支援的Makefile不盡相同),工作量比較大不說,還很難保證不出錯。MinGW的出現,提供了兩個平台下的“跨平台編譯方案”。MinGW與MSYS相配合,連./configure都有了。與GNU不同的是,MinGW編譯產生的是Windows下的可執行檔(.exe)或庫檔案(.dll,.lib)——不過編譯過程中的的中間檔案仍然是.o檔案,而不是.obj檔案(這當然無所謂了,中間檔案嘛,編譯完成後就沒有用了)。MinGW好像是在Cygwin基礎上發展而來的。順便說一下Cygwin,它與MinGW在想法上基本是一致的,兩者相比,Cygwin是重量級的(需下載50M以上直至數百兆不等,安裝後佔用空間可達1G),MinGW是輕量級的(需下載的檔案只有20M,安裝後70M左右),這是單純從體積上說的,另外Cygwin現在據說也不是完全免費的了。

wxWidgets-2.6.2在Windows下的編譯方式。用VC編譯的話,有兩種方式:VC工程,Makefile。前者就不用說了,用VC開啟*.dsw檔案,F7就可以了。這裡說一下Makefile的編譯方式,首先進入命令列視窗(cmd.exe 或 command.exe),切換路徑到wxWidgets原始碼所在目錄下的 build/msw 子目錄,執行“nmake -f makefile.vc”即可。用MinGW編譯的話,基本上與前面類似,也是進入命令列視窗(cmd.exe 或 command.exe),切換路徑到wxWidgets原始碼所在目錄下的 build/msw 子目錄,只是執行的命令列是“mingw32-make -f makefile.gcc”。最終產生的庫檔案位於lib目錄中。當然,編譯之前可能需要設定一下,比如指定編譯為動態庫(DLL)還是靜態庫(LIB),或者是否採用UNICODE,等等,設定方式就是修改 build/msw 子目錄中的 config.vc 或 config.gcc 檔案。

VC6和MinGW相比,兩者在編譯速度,以及在編譯後的檔案的大小方面都有較大不同。根據我編譯wxWidgets時所做的簡單統計,VC6的編譯速度比MinGW至少快一倍,VC6編譯產生的動態庫DLL檔案比MinGW小一倍左右,VC6編譯產生的靜態庫LIB檔案比MinGW要大不少(大約是1.5倍)。

總起來說,在Windows系統下,還是用VC編譯比較合適,沒辦法的情況下才會選擇MinGW。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.