gcc g加加 make cmake區別
首先介紹一下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。
TAG:程序員小新人學習 |