編譯器gcc與g++的區別
阿新 • • 發佈:2019-02-09
gcc開始時候的名字是GNU c compiler, 就是說設計的初衷是用來編譯C語言的。 後來,不斷的拓展發展成了 gnu compiler collection。如果你用gcc編譯過fortran程式碼的話,就會對後者理解的比較深刻了。g++的設計目標是用來編譯C++程式程式碼的,如期名字所暗示的那樣。因此,g++是一個c++ compiler,gcc是 compiler collection。所以,可以推知g++的功能只是gcc的一個子集。
gcc可以用來編譯.cpp為字尾的c++程式原始檔,同樣g++也可以。你可能以為使用gcc編譯的時候,會呼叫g++。然而,並非如此!!!g++誕生的比gcc晚,剛誕生的g++事實上是用指令碼語言寫的,其中將一系列的命令列引數傳給了gcc,所以應該說g++的內部呼叫了gcc。舊版本的g++的實現指令碼是用bash寫的,雖然現在的g++使用二進位制可執行檔案寫的,但是內部原理還是一樣的。
gcc和g++的具體區別有以下幾點:
(1)對於.cpp為字尾的C++檔案,使用gcc編譯或者g++編譯效果差不多一樣的,但是連線的時候不同,g++會在連結的時候自動使用libstdc++,而gcc不會。
(2)對於.c為字尾的原始檔,gcc預設使用c編譯器去編譯,而g++預設呼叫的是c++的編譯器。
(3)使用gcc和g++在編譯.cpp檔案時都會額外定義一些巨集,這些巨集在使用gcc編譯.c檔案時沒有的,這些巨集包括:
學習資料參考於:#define __GXX_WEAK__ 1 #define __cplusplus 1 #define __DEPRECATED 1 #define __GNUG__ 4 #define __EXCEPTIONS 1 #define __private_extern__ extern
http://hipercomer.blog.51cto.com/4415661/846923