【C】【linux】 G++ GCC make makefile 的區別

首先介紹一下GCC:GNU Compiler Collection(GNU 編譯器集合),在爲Linux開發應用程序時,絕大多數情況下使用的都是C語言,因此幾乎每一位Linux程序員面臨的首要問題都是如何靈活運用C編譯器。目前 Linux下最常用的C語言編譯器是GCC(GNU Compiler Collection),它是GNU項目中符合ANSI C標準的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程序。GCC不僅功能非常強大,結構也異常靈活。最值得稱道的一點就是它可以通過不同的前端模塊來支持各種語言,如Java、 Fortran、Pascal、Modula-3和Ada等。

gcc與g++區別:  
gcc是GCC中的GUNC Compiler(C 編譯器)

g++是GCC中的GUN C++ Compiler(C++編譯器)

更準確的說法是:gcc調用了Ccompiler,而g++調用了C++ compiler

gcc和g++的主要區別

1.對於 *.c和*.cpp文件,gcc分別當做c和cpp文件編譯(c和cpp的語法強度是不一樣的); g++則統一當做cpp文件編譯

2. 使用g++編譯文件時,g++會自動鏈接標準庫STL,而gcc不會自動鏈接STL,在用gcc編譯c++文件時,爲了能夠使用STL,需要加參數 –lstdc++ ,但這並不代表 gcc –lstdc++ 和 g++等價

3.gcc在編譯C文件時,可使用的預定義宏是比較少的

4.gcc在編譯cpp文件時/g++在編譯c文件和cpp文件時(這時候gcc和g++調用的都是cpp文件的編譯器),會加入一些額外的宏,這些宏如下:

#define__GXX_WEAK__ 1
#define __cplusplus 1
#define __DEPRECATED 1
#define __GNUG__ 4
#define __EXCEPTIONS 1

#define __private_extern__ extern

gcc/g++與make區別:
當你的程序只有一個源文件時,直接就可以用gcc命令編譯它。但是當你的程序包含很多個源文件時,用gcc命令逐個去編譯時,你就很容易混亂而且工作量大.

所以出現了make工具!make工具可以看成是一個智能的批處理工具,它本身並沒有編譯和鏈接的功能,而是用類似於批處理的方式—通過調用makefile文件中用戶指定的命令來進行編譯和鏈接的。

makefile是什麼?簡單的說就像一首歌的樂譜,make工具就像指揮家,指揮家根據樂譜指揮整個樂團怎麼樣演奏,make工具就根據makefile中的命令進行編譯和鏈接的。makefile命令中就包含了調用gcc(也可以是別的編譯器)去編譯某個源文件的命令。

make與cmake區別:
makefile在一些簡單的工程完全可以人工手下,但是當工程非常大的時候,手寫makefile也是非常麻煩的,如果換了個平臺makefile又要重新修改。

這時候就出現了Cmake這個工具,cmake就可以更加簡單的生成makefile文件給上面那個make用。當然cmake還有其他功能,就是可以跨平臺生成對應平臺能用的makefile,你不用再自己去修改了。

可是cmake根據什麼生成makefile呢?它又要根據一個叫CMakeLists.txt文件(學名:組態檔)去生成makefile。
————————————————
版權聲明:本文爲CSDN博主「hblhly」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hblhly/article/details/80740493

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