RHEL 6.4中安裝G++編譯器及GCC與G++區別

1.在虛擬機設置的CD-ROM中選擇“使用ISO鏡像文件”,選擇你的Linux安裝盤。

2.進入Linux的命令行狀態,掛載鏡像文件。“mount  -t  iso9660 /dev/cdrom /mnt/cdrom ”,-t iso9660是指定文件類型。mnt目錄下本沒有cdrom目錄,可以用mkdir命令創建該目錄。

3.掛載成功後,進入/mnt/cdrom/Package目錄,使用ls -l |grep gcc命令篩選出和gcc有關的安裝包。gcc-c++-XXXX.rpm就是G++的安裝包,使用rpm -ivh gcc-c++-XXXX.rpm 命令就可以安裝。可能會提示需要其他安裝包,那就一步一步安裝好其他依賴包即可。


附:GCC與G++編譯器的區別

gcc和g++都是GNU(一個組織)的編譯器。

1、對於.c後綴的文件,gcc把它當做是C程序;g++當做是C++程序;

2、對於.cpp後綴的文件,gcc和g++都會當做c++程序。

3、編譯階段,g++會調用gcc(也就是說);

4、連接階段,通常會用g++來完成,這是因爲gcc命令不能自動和c++程序使用的庫連接。

 gcc可以用來編譯c++但是它不會自動調用鏈接的c++庫,你需要自己手動鏈接,使用如下命令: gcc -lstdc++main.cpp。g++則會自動調用鏈接的c++庫。

gcc可以根據後綴名爲.c或.cpp分別按c程序和c++程序來編譯;但是g++無論是.c或.cpp都統一按c++程序來編譯。
而且g++在編譯的過程中,其實是調用gcc按照c++程序來編譯的。即編譯工作最終都是由gcc來完成的。
對於c++程序,因爲gcc命令不能自動和C++程序使用的庫聯接,需要自己手動鏈接c++庫,所以鏈接可以用g++或者gcc -lstdc++。也即是說c++程序,也可以用gcc來鏈接。

但是gcc在編譯c程序的時候,它會自動鏈接c庫的。


誤區一:gcc只能編譯c代碼,g++只能編譯c++代碼
兩者都可以,但是請注意:
1.後綴爲.c的,gcc把它當作是C程序,而g++當作是c++程序;後綴爲.cpp的,兩者都會認爲是c++程序,注意,雖然c++是c的超集,但是兩者對語法的要求是有區別的。C++的語法規則更加嚴謹一些。
2.編譯階段,g++會調用gcc。對於c++代碼,可以用gcc或g++來編譯,二者等價的。
3 鏈接階段,因爲gcc命令不能自動和C++程序使用的庫聯接,所以通常用g++來完成鏈接。一般爲了方便,乾脆編譯和鏈接都用g++了。這就給人一種錯覺,好像cpp程序只能用g++編譯鏈接似的。


誤區二:gcc不會定義__cplusplus宏,而g++會
實際上,這個宏只是標誌着編譯器將會把代碼按C還是C++語法來解釋,如上所述,如果後綴爲.c,並且採用gcc編譯器,則該宏就是未定義的,否則,就是已定義。

誤區三:編譯只能用gcc,鏈接只能用g++
嚴格來說,這句話不算錯誤,但是它混淆了概念,應該這樣說:編譯可以用gcc/g++,而鏈接可以用g++或者gcc -lstdc++。因爲gcc命令不能自動和C++程序使用的庫聯接,所以通常使用g++來完成聯接。但在編譯階段,g++會自動調用gcc,二者等價。


gcc/g++在執行編譯工作的時候,總共需要4步
1.預處理,生成.i的文件[預處理器cpp] 2.將預處理後的文件轉換成彙編語言,生成文件.s[編譯器egcs] 3.有彙編變爲目標代碼(機器代碼)生成.o的文件[彙編器as] 4.連接目標代碼,生成可執行程序[鏈接器ld]
來源:http://blog.csdn.net/nodeathphoenix/article/details/8264017

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章