C/C++項(xiàng)目編譯工具簡(jiǎn)單介紹
本文基于一個(gè)需要對(duì) C 語(yǔ)言家族項(xiàng)目進(jìn)行編譯、生成解決方案的開(kāi)發(fā)者的視角,對(duì)編譯過(guò)程中所需要的各個(gè)工具進(jìn)行簡(jiǎn)要的名詞解釋。
GCC | LLVM 提供編譯器 <-- GNU Make 根據(jù)配置文件進(jìn)行編譯 <-- Autoconf | CMake 自動(dòng)生成編譯用的配置文件
注:上面提到的各類(lèi)集合和工具所能做的事情并不僅僅局限于此。
GCC | LLVM
GCC 和 LLVM 是我們?cè)诰幾g C 系項(xiàng)目時(shí)最常使用的兩個(gè)工具鏈。
GCC 的全稱(chēng)是 GNU Compiler Collection , 即 GNU 編譯器集合;
LLVM 的全稱(chēng)就是 LLVM (最開(kāi)始的時(shí)候作為 Low Level Virtual Machine 的縮寫(xiě),現(xiàn)在涵義已經(jīng)發(fā)生了變化),現(xiàn)在是作為 LLVM 的編譯器和工具鏈集合的一個(gè)總稱(chēng)。
gcc,全稱(chēng) GNU C Compiler,是 GCC 中的 C 編譯器;
g++,全稱(chēng) GNU C++ Compiler,是 GCC 中的 C++ 編譯器。
Clang 是 LLVM 集合前端中的 C 系編譯器和工具鏈。Clang 兼容 GCC ,Clang 出現(xiàn)的時(shí)間比 GCC 晚,相比 GCC , Clang 的編譯速度更快,錯(cuò)誤提示更友好。
GNU Make
當(dāng)項(xiàng)目的源文件數(shù)量很多,結(jié)構(gòu)十分復(fù)雜時(shí),僅僅使用編譯器對(duì)項(xiàng)目進(jìn)行編譯,會(huì)是一件十分繁瑣的事情,引用頭文件目錄,引入源文件,引入第三方靜態(tài)庫(kù)動(dòng)態(tài)庫(kù)都會(huì)十分的繁瑣。
GNU Make 能夠基于前面提供的編譯器,選擇項(xiàng)目中合適的源文件來(lái)生成項(xiàng)目所需的中間目標(biāo)文件和可執(zhí)行文件。開(kāi)發(fā)者通過(guò)編寫(xiě)一個(gè)名為 makefile 的文件來(lái)指導(dǎo) GNU Make 處理編譯。
Autoconf | CMake
Autoconf 是 m4 宏處理的擴(kuò)展包,通過(guò)它可以生成一個(gè)腳本,這個(gè)腳本能夠自動(dòng)生成編譯用的配置文件。Autoconf 和 Automake 是一對(duì)。
CMake 是一個(gè)開(kāi)源的軟件,開(kāi)發(fā)者通過(guò)編寫(xiě)?yīng)毩⒂谄脚_(tái)和編譯器的配置文件,來(lái)指導(dǎo)項(xiàng)目的編譯過(guò)程。
Autoconf 中涉及的概念比較多,生成腳本的步驟比較繁瑣, CMake 在使用上更為簡(jiǎn)單。
參考鏈接
GCC,the GNU Compiler Collection
Programming Languages Supported by GCC
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,希望腳本之家整理的內(nèi)容能夠幫助到大家,如果有其他步驟可以聯(lián)系下方小編。
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(116.每個(gè)節(jié)點(diǎn)的右向指針)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(116.每個(gè)節(jié)點(diǎn)的右向指針),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++超詳細(xì)講解內(nèi)存空間分配與this指針
this?指針在C++類(lèi)和對(duì)象中是個(gè)很方便實(shí)用的關(guān)鍵字,可以簡(jiǎn)化對(duì)象成員屬性的調(diào)用,使代碼表達(dá)的含義更加準(zhǔn)確;在之前的學(xué)習(xí)中我們都可以判斷變量所占內(nèi)存空間大小,那么我們創(chuàng)建的類(lèi)對(duì)象所占的內(nèi)存空間怎么計(jì)算呢?想知道this的妙用和類(lèi)對(duì)象占用的內(nèi)存空間就來(lái)跟我學(xué)習(xí)吧2022-05-05
C++類(lèi)與對(duì)象深入之運(yùn)算符重載與const及初始化列表詳解
運(yùn)算符是程序中最最常見(jiàn)的操作,例如對(duì)于內(nèi)置類(lèi)型的賦值我們直接使用=賦值即可,因?yàn)檫@些編譯器已經(jīng)幫我們做好了,但是對(duì)象的賦值呢?能直接賦值嗎2022-06-06
C++無(wú)符號(hào)整數(shù)溢出問(wèn)題解析
這篇文章主要介紹了C++無(wú)符號(hào)整數(shù)溢出探究,本文主要探討C/C++中無(wú)符號(hào)整數(shù)超過(guò)范圍后的計(jì)算問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C語(yǔ)言入門(mén)篇--變量[定義,初始化賦值,外部聲明]
本篇文章是c語(yǔ)言基礎(chǔ)篇,本文對(duì)初識(shí)c語(yǔ)言的變量、變量的定義、初始化與賦值、變量的分類(lèi)、含義、外部聲明做了簡(jiǎn)要的描述,幫助大家快速入門(mén)c語(yǔ)言的世界,更好的理解c語(yǔ)言2021-08-08

