gcc簡介(學習筆記)

嵌入式~皮皮發表於2020-10-04

 gcc所支援字尾名解釋
 —— .c             c原始程式
 —— .C/.cc/.cxx    C++原始程式
 —— .m            Objective-C原始程式
 —— .i            經過預處理的c原始程式
 —— .ii            經過預處理的C++原始程式
 —— .s/.S        組合語言原始程式
 —— .h            預處理檔案(標頭檔案)
 —— .o            目標檔案
 —— .a/.so        編譯後的庫檔案
 
 編譯器的主要元件
 —— 分析器:分析器將源語言程式程式碼轉換為組合語言。因為要從
 一種格式轉換為另一種格式(C到彙編),所以分析器需要知道目
 標機器的組合語言。
 —— 彙編器:彙編器將組合語言程式碼轉換為CPU可以執行位元組碼。
 —— 聯結器:連結器將彙編器生成的單獨的目標檔案組合成可執行
 的應用程式。連結器需要知道這種目標格式以便工作。
 —— 標準C庫:核心的C函式都有一個主要的C庫來提供。如果在應
 用程式中用到了C庫中的函式,這個庫就會通過連結器和原始碼連
 接來生成最終的可執行程式。
 
 GCC的基本用法和選項
 —— Gcc最基本的用法是:gcc [options] [filenames]
    -c:只編譯,不連線生成可執行檔案,編譯器只是由輸入的.c等
    原始碼檔案生成.o為字尾的目標檔案,通常用於編譯不包括主程
    序的子程式檔案。
    -o:output filename,確定輸出檔案的名稱為output filename,
    同時這個名稱不能和原始檔同名。如果不給出這個選項,gcc就給
    出預設的可執行檔案a.out
    -g:產生符號除錯工具(GDB)所必要的符號資訊,想要對原始碼
    進行除錯,我們就必須加入這個選項。
    -0:對程式進行優化編譯、連線,採用這個選項,整個原始碼會在
    編譯、連線過程中進行優化處理,這樣產生的可執行檔案的執行效
    率可以提高,但是,編譯、連線的速度就相應地要慢一些。
    -02:比-0更好的優化編譯、連線,當然整個編譯、連線過程會更慢
    -I:將dirname所指出的目錄加入到程式標頭檔案目錄列表中,是在預
    編譯過程中使用的引數。
    -L:將dirname所指出的目錄加入到程式函式檔案檔案的目錄列表中,
    是在連結過程中使用的引數
    
 GCC編譯過程
 —— GCC編譯流程分為四個步驟
    1、預處理(Pre-Processing)*.i    
    2、編譯(Compiling)*.s
    3、彙編(Assembling)*.o
    4、連結(Linking)*.exe
    
    hello.c        gcc -E    生成.i檔案
    hello.i        gcc -S    生成彙編檔案
    hello.s        gcc -c    生成.o檔案
    hello.o        
    

相關文章