1.
參考第乙個答案:gcc 最開始的時候是 gnu c compiler, 如你所知,就是乙個c編譯器。但是後來因為這個專案裡邊整合了更多其他不同語言的編譯器,gcc就代表 the gnu compiler collection,所以表示一堆編譯器的合集。 g++則是gcc的c++編譯器。
現在你在編譯**時呼叫的gcc,已經不是當初那個c語言編譯器了,更確切的說他是乙個驅動程式,根據**的字尾名來判斷呼叫c編譯器還是c++編譯器 (g++)。比如你的**字尾是*.c,他會呼叫c編譯器還有linker去鏈結c的library。如果你的**字尾是cpp, 他會呼叫c++編譯器(原文寫的g++,這裡改為c++更好理解),當然library call也是c++版本的。以上只是針對編譯階段,鏈結階段gcc命令則不能自動和c++程式使用的庫連線。
2.看了這麼多篇文章,覺得就這兩篇講的清楚一些:
3.下面總結一下自己的理解:
gcc與g++是驅動程式,根據字尾來決定呼叫哪乙個編譯器。gcc預設呼叫c編譯器,(字尾為cpp則呼叫c++編譯器。)g++預設呼叫c++編譯器,(但如果遇到c程式,它會直接呼叫gcc去編譯.)
編譯階段:字尾為.c的,gcc把它當作是c程式,(呼叫c編譯器)而g++當作是c++程式(呼叫c++編譯器);字尾為cpp則都呼叫c++編譯器。
連線階段:gcc呼叫c編譯器還有linker去鏈結c的library(也可通過gcc -lstdc++呼叫c++編譯器還有linker鏈結c++的library),g++呼叫c++編譯器還有linker鏈結c++的library
gcc與g 的區別
gcc和g 都是gnu 組織 的乙個編譯器。誤區一 gcc只能編譯c g 只能編譯c 兩者都可以,但是請注意 1,字尾為.c的,gcc把它當作是c程式,而g 當作是c 程式 字尾為.cpp的,兩者都會認為是c 程式,注意,雖然c 是c的超集,但是兩者對語法的要求是有區別的。c 的語法規則更加嚴謹一些...
gcc與g 的區別
gcc和g 都是gnu 組織 的乙個編譯器。誤區一 gcc只能編譯c g 只能編譯c 兩者都可以,但是請注意 1,字尾為.c的,gcc把它當作是c程式,而g 當作是c 程式 字尾為.cpp的,兩者都會認為是c 程式,注意,雖然c 是c的超集,但是兩者對語法的要求是有區別的。c 的語法規則更加嚴謹一些...
gcc與g 的區別
gcc和g 都是gnu 組織 的乙個編譯器。誤區一 gcc只能編譯c g 只能編譯c 兩者都可以,但是請注意 1,字尾為.c的,gcc把它當作是c程式,而g 當作是c 程式 字尾為.cpp的,兩者都會認為是c 程式,注意,雖然c 是c的超集,但是兩者對語法的要求是有區別的。c 的語法規則更加嚴謹一些...