gcc和g++的區別:安裝、版本、編譯(轉)


用以下命令:

yum install gcc

    安裝的只有gcc,而不會安裝g++。gcc是編譯器合集,而gcc-g++或簡稱g++則是C++編譯器。gcc成為了編譯器的選擇器。gcc通過識別被編譯的源代碼的后綴名,來啟用不同的編譯器來編譯。如果是m.c,則會啟用c語言編譯器編譯;如果是m.cpp,則會啟用g++來編譯。我們都可以用gcc m.c(pp)來實現編譯。
    但是使用上述命令安裝的gcc,並沒有安裝g++編譯器。所以你編譯cpp文件時會提示:
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
    而如果直接執行g++命令,則提示命令找不到:
[root@VM_41_21_centos pkg]# g++ --version
-bash: g++: command not found
    這充分說明,gcc和g++並不是一回事。而區別在一開頭就解釋了。
    如果要安裝g++編譯器,則需要再安裝gcc-c++,命令如下:
yum install gcc-c++
    安裝完了,我們就需要看一下gcc編譯器的版本:
[root@VM_41_21_centos pkg]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    我們可以在查看下g++編譯器的版本:
[root@VM_41_21_centos pkg]# g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    之前我問朋友同事gcc和g++查出來的版本有區別嗎?他們說沒有區別。但是最近折騰服務器折騰的多,升級編譯器后,發現gcc和g++查出來的版本號不一樣,其中必定有蹊蹺。通過一步步慢慢的摸索查資料學習,也就慢慢整明白了。
    gcc和g++的版本,我們一般都會同步的安裝或升級。但是有時候也可能出現不同步的現象。上面就甚至沒有安裝g++。如果在升級編譯器的時候,只升級了gcc,那么gcc和g++的版本都不一樣了。至於版本不一樣,是不是用gcc和g++編譯會有差異,我沒有研究了。當然,gcc編譯C代碼,g++編譯c++代碼,肯定都是按照gcc或g++的版本來的。但是gcc來編譯C++代碼,就不知道是什么情況了。(你可以用低版本的gcc編譯C++11代碼,安裝的g++的版本完全支持C++,這樣可以測試gcc和g++版本不一致是不是會產生一些問題或者說是一個什么樣的情況。)
    如果沒有安裝g++,是沒有辦法編譯C++代碼的。gcc編譯C++代碼只是一個殼動作,真正編譯是轉交給了g++的。gcc鏈接C++動態庫時,也是需要使用g++的。
    很多人要么就是把gcc和g++混為一談,要么就是根本就搞不清楚,非常混亂。然而我仔細研究之后,才發現並不復雜。
    gcc最開始就僅僅是C語言的編譯器,后來支持更多的語言了,其中包括C++。所以gcc已經變成了編譯器選擇器。不過gcc的基本屬性,即編譯C語言的能力還是存在的。而其他語言則要傳遞給其他的編譯器組件。這也是我們安裝時是指定gcc-c++的原因了,C++編譯器即g++成為了gcc編譯器集合中的一個組件而已。
    當然,以上都是我個人的一個大致的分析和理解,足以支持初學者了解基本的背景了。我作為一個初學者,只是因為認真研究了,總體的認識還是對的,至於太具體的細節,可能認知有限而錯誤。如果是這樣,希望您能夠指正。

 

from(codexia)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM