GCC使用教程——gcc和g++是什麼,有什麼區別?

轉載來自:https://www.xinbaoku.com/archive/eEu3fKaP.html

發展至今(2024 年 2 月份),GCC 編譯器已經更新至 14.0.3 版本,其功能也由最初僅能編譯 C 語言,擴增至可以編譯多種編程語言,其中就包括 C++ 。

除此之外,當下的 GCC 編譯器還支持編譯 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAIL)等程序,甚至於 GCC 6 以及之前的版本還支持編譯 Java 程序。但本教程主要講解如何使用 GCC 編譯器編譯運行 C 和 C++ 程序,因此有關其它編程語言如何使用 GCC 編譯器編譯,將不再做具體講解。

那麼,在已編輯好 C 語言或者 C++ 代碼的前提下,如何才能調用 GCC 編譯器爲我們編譯程序呢?很簡單,GCC 編譯器已經爲我們提供了調用它的接口,對於 C 語言或者 C++ 程序,可以通過執行 gcc 或者 g++ 指令來調用 GCC 編譯器。

值得一提的是,實際使用中我們更習慣使用 gcc 指令編譯 C 語言程序,用 g++ 指令編譯 C++ 代碼。需要強調的一點是,這並不是 gcc 和 g++ 的區別,gcc 指令也可以用來編譯 C++ 程序,同樣 g++ 指令也可以用於編譯 C 語言程序。

那麼,gcc 和 g++ 的區別是什麼呢?接下來就給讀者做詳細的講解。

實際上,只要是 GCC 支持編譯的程序代碼,都可以使用 gcc 命令完成編譯。可以這樣理解,gcc 是 GCC 編譯器的通用編譯指令,因爲根據程序文件的後綴名,gcc 指令可以自行判斷出當前程序所用編程語言的類別,比如:
  • xxx.c:默認以編譯 C 語言程序的方式編譯此文件;
  • xxx.cpp:默認以編譯 C++ 程序的方式編譯此文件。
  • xxx.m:默認以編譯 Objective-C 程序的方式編譯此文件;
  • xxx.go:默認以編譯 Go 語言程序的方式編譯此文件;

當然,gcc 指令也爲用戶提供了“手動指定代表編譯方式”的接口,即使用 -x 選項。例如,gcc -xc xxx 表示以編譯 C 語言代碼的方式編譯 xxx 文件;而 gcc -xc++ xxx 則表示以編譯 C++ 代碼的方式編譯 xxx 文件。有關 -x 選項的用法,後續會給出具體樣例。

但如果使用 g++ 指令,則無論目標文件的後綴名是什麼,該指令都一律按照編譯 C++ 代碼的方式編譯該文件。也就是說,對於 .c 文件來說,gcc 指令以 C 語言代碼對待,而 g++ 指令會以 C++ 代碼對待。但對於 .cpp 文件來說,gcc 和 g++ 都會以 C++ 代碼的方式編譯。

有讀者可能會認爲,C++ 兼容 C 語言,因此對於 C 語言程序來說,使用 gcc 編譯還是使用 g++ 編譯,應該沒有什麼區別,事實並非如此。嚴格來說,C++ 標準和 C 語言標準的語法要求是有區別的。

讀者可以這樣認爲,g++ 指令就等同於gcc -xc++ -lstdc++ -shared-libgcc指令。顯然後者書寫是非常麻煩的,大多數人會更喜歡前者。
對於 gcc 和 g++ 指令,還有其它更多細節方面的區別,這裏不再做更多的贅述。讀完本節,讀者只需要知道,對於 C 語言程序的編譯,我們應該使用 gcc 指令,而編譯 C++ 程序則推薦使用 g++ 指令,這就足夠了。

那麼,編譯成功的 C 語言或者 C++ 程序,該如何運行查看其執行結果呢?我們將在後續章節會大家做詳細的講解。

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