gcc

gcc & clang

GCC:GNU(Gnu's Not Unix)編譯器套裝(GNU Compiler Collection,GCC),指一套編程語言編譯器,以GPL及LGPL許可證所發(fā)行的自由軟件,也是GNU項目的關(guān)鍵部分,也是GNU工具鏈的主要組成部分之一。GCC(特別是其中的C語言編譯器)也常被認(rèn)為是跨平臺編譯器的事實標(biāo)準(zhǔn)。GCC原本用C開發(fā),后來因為LLVM、Clang的崛起,它更快地將開發(fā)語言轉(zhuǎn)換為C++。

GCC支持的語言:原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC在發(fā)布后很快地得到擴展,變得可處理C++。之后也變得可處理Fortran、Pascal、Objective-C、Java、Ada,Go與其他語言。

許多操作系統(tǒng),包括許多類Unix系統(tǒng),如Linux及BSD家族都采用GCC作為標(biāo)準(zhǔn)編譯器。蘋果電腦預(yù)裝的Mac OS X操作系統(tǒng)也采用這個編譯器。

GCC目前由世界各地不同的數(shù)個程序員小組維護(hù)。它是移植到最多中央處理器架構(gòu)以及最多操作系統(tǒng)的編譯器。由于GCC已成為GNU系統(tǒng)的官方編譯器(包括GNU/Linux家族),它也成為編譯與創(chuàng)建其他操作系統(tǒng)的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。

GCC目前由世界各地不同的數(shù)個程序員小組維護(hù)。它是移植到最多中央處理器架構(gòu)以及最多操作系統(tǒng)的編譯器。由于GCC已成為GNU系統(tǒng)的官方編譯器(包括GNU/Linux家族),它也成為編譯與創(chuàng)建其他操作系統(tǒng)的主要編譯器,包括BSD家族、Mac OS X、NeXTSTEP與BeOS。

GCC支持的主要處理器架構(gòu):ARM、x86、x86-64、MIPS、PowerPC等。

Clang:是一個C、C++、Objective-C和Objective-C++編程語言的編譯器前端。它采用了底層虛擬機(LLVM)作為其后端。它的目標(biāo)是提供一個GNU編譯器套裝(GCC)的替代品。作者是克里斯·拉特納(Chris Lattner),在蘋果公司的贊助支持下進(jìn)行開發(fā),而源代碼授權(quán)是使用類BSD的伊利諾伊大學(xué)厄巴納-香檳分校開源碼許可。Clang主要由C++編寫。

GCC與Clang區(qū)別:

GCC特性:除支持C/C++/Objective-C/Objective-C++語言外,還是支持Java/Ada/Fortran/Go等;當(dāng)前的Clang的C++支持落后于GCC;支持更多平臺;更流行,廣泛使用,支持完備。

Clang特性:編譯速度快;內(nèi)存占用??;兼容GCC;設(shè)計清晰簡單、容易理解,易于擴展增強;基于庫的模塊化設(shè)計,易于IDE集成;出錯提示更友好。

Clang采用的license是BSD,而GCC是GPLv3。


gcc編譯步驟

  1. 預(yù)處理 .c -> .i 展開頭文件、宏替換
  2. 編譯 .i -> .s
  3. 匯編 .s -> .o
  4. 連接 .o -> 可執(zhí)行文件

gcc編譯一步到位:

gcc main.c -o main
會生成main可執(zhí)行文件,./main就會執(zhí)行,file main可以查看文件屬性

gcc 編譯參數(shù)

TODO...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容