gcc

一、簡介

GCC是以GPL許可證所發行的自由軟件,也是GNU計劃的關鍵部分。GCC的初衷是為GNU操作系統專門編寫一款編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)采納為標準的編譯器,甚至在微軟的Windows上也可以使用GCC。GCC支持多種計算機體系結構芯片,如x86、ARM、MIPS等,并已被移植到其他多種硬件平臺?[1]?。

GCC原名為GNU C語言編譯器(GNU C Compiler),只能處理C語言。但其很快擴展,變得可處理C++,后來又擴展為能夠支持更多編程語言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各類處理器架構上的匯編語言等,所以改名GNU編譯器套件(GNU Compiler Collection

二、GCC:GNU Compiler Collection(GUN 編譯器集合),它可以編譯C、C++、JAV、Fortran、Pascal、Object-C、Ada等語言。

gcc是GCC中的GUN C Compiler(C 編譯器)

g++是GCC中的GUN C++ Compiler(C++編譯器)

gcc和g++的主要區別

1. 對于 *.c和*.cpp文件,gcc分別當做c和cpp文件編譯(c和cpp的語法強度是不一樣的)

2. 對于 *.c和*.cpp文件,g++則統一當做cpp文件編譯

3. 使用g++編譯文件時,g++會自動鏈接標準庫STL,而gcc不會自動鏈接STL

4. gcc在編譯C文件時,可使用的預定義宏是比較少的

5. gcc在編譯cpp文件時/g++在編譯c文件和cpp文件時(這時候gcc和g++調用的都是cpp文件的編譯器),會加入一些額外的宏,這些宏如下:

#define __GXX_WEAK__ 1

#define __cplusplus 1

#define __DEPRECATED 1

#define __GNUG__ 4

#define __EXCEPTIONS 1

#define __private_extern__ extern

6.????????在用gcc編譯c++文件時,為了能夠使用STL,需要加參數 –lstdc++ ,但這并不代表 gcc –lstdc++ 和 g++等價,它們的區別不僅僅是這個

三、MinGW-w64 ?

MinGW 的全稱是:Minimalist GNU on Windows 。它實際上是將經典的開源 C語言 編譯器 GCC 移植到了 Windows 平臺下,并且包含了 Win32API ,因此可以將源代碼編譯為可在?Windows 中運行的可執行程序。而且還可以使用一些 Windows 不具備的,Linux平臺下的開發工具。一句話來概括:MinGW 就是 GCC 的 Windows 版本 。

以上是 MinGW 的介紹,MinGW-w64 與 MinGW 的區別在于 MinGW 只能編譯生成32位可執行程序,而 MinGW-w64 則可以編譯生成 64位 或 32位 可執行程序。

正因為如此,MinGW 現已被?MinGW-w64 所取代,且?MinGW 也早已停止了更新,內置的 GCC 停滯在了 4.8.1 版本,而 MinGW-w64 內置的 GCC 則更新到了 6.2.0 版本。


B、為什么使用 MinGW-w64 ?

1. MinGW-w64 是開源軟件,可以免費使用。

2. MinGW-w64 由一個活躍的開源社區在持續維護,因此不會過時。

3. MinGW-w64 支持最新的 C語言 標準。

4. MinGW-w64 使用 Windows 的C語言運行庫,因此編譯出的程序不需要第三方 DLL ,可以直接在 Windows 下運行。

5. 那些著名的開源 IDE 實際只是將 MinGW-w64 封裝了起來,使它擁有友好的圖形化界面,簡化了操作,但內部核心仍然是 MinGW-w64。

MinGW-w64 是穩定可靠的、持續更新的 C/C++ 編譯器,使用它可以免去很多麻煩,不用擔心跟不上時代,也不用擔心編譯器本身有bug,可以放心的去編寫程序。


C、MinGW-w64 適合做什么?

對于熟悉 MinGW-w64 的高手而言,它可以編譯任何 C語言 程序。但對于一般人來說,MinGW-w64 太過簡陋,連圖形用戶界面都沒有。這讓習慣使用鼠標的人,感到很痛苦。雖然也可以通過一些配置,讓 MinGW-w64 擁有圖形用戶界面,但那個過程非常麻煩。

除此之外,編譯復雜的程序時,還需要你會編寫 Makefile ,否則只能一個文件一個文件的編譯,可想而知會多么辛苦。

但對于初學 C語言 的人來說,MinGW-w64 是正合適的編譯器,至少黑色的命令提示符界面很有編程的氣氛,感覺很酷。

在剛開始學 C語言 時,所有代碼通常都寫在一個文件中,只要輸入幾個簡單的命令,就能用 MinGW-w64 編譯成可執行文件。雖然 ?VS2015 等編譯器,只要點擊下鼠標就可以完成編譯,但它會自動生成一大堆工程文件,讓初學者摸不著頭腦。而 MinGW-w64 則只會生成一個可執行文件。

如果對 MinGW-w64 和 VS2015 等編譯器進行一下形容,那么 MinGW-w64 是手動的,而 ?VS2015 等編譯器則是自動的。因此 MinGW-w64 的編譯過程更加直觀容易理解,也比較適合C語言學習。

總而言之,對于一般人來說,MinGW-w64 適合學習 C語言 時使用,真正工作還是用 ?VS2015 更好。當然如果您是在 Linux 下工作,那么Code::Blocks可能是一個選擇,不過最大的可能是您必須習慣使用?GCC 來編譯程序。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容