天天看點

GNU工具以及GCC對C語言程式的處理流程

GCC是一族工具的集合,包含預處理器、編譯器、彙編器、連結器。

對于預設的檔案名,GCC可以自動選擇工具自動完成檔案處理過程。

從C語言的源程式道可執行檔案,實質上是依靠GCC調用一系列工具完成的。

GCC預設處理的檔案

檔案類型 擴充名 檔案說明
文本檔案 *.c C源檔案
文本檔案 *.c C源檔案
文本檔案 *.cpp C++源檔案
文本檔案 *.i 預處理後的C源檔案
文本檔案 *.ii 預處理後的C++源檔案
文本檔案 *.s 彙編語言
文本檔案 *.h 頭檔案
二進制檔案 *.o 目标檔案
二進制檔案 *.so 動态庫(共享庫)
二進制檔案 *.a 靜态庫(歸檔檔案)

Binutils工具集合

Binutils是一個二進制工具集合,包含彙編、連結以及一系列的輔助工具。

工具名稱 說明
as GNU彙編器。将處理器的彙編代碼轉換成可執行代碼,并存儲道目标檔案.o檔案中
ld GNU連結器。将一個或多個目标檔案.o庫組合成一個可執行程式;或者生成靜态庫和動态庫
ar 歸檔工具,可以将多個檔案組合成一個大檔案,并且可以讀取原始檔案的内容
stripe 取出檔案中的符号
nm 用來顯示目标檔案中的符号
objectcopy 轉換成二進制代碼的工具
objdump 顯示目标檔案的反彙編工具
readelf 顯示ELF檔案中的各種資訊
string 顯示檔案中的可列印字元
ranlib 産生歸檔檔案的索引,并将其儲存到歸檔檔案中,索引同時列出歸檔檔案各成員所定義的可重配置設定目标檔案
addr2line 可以将一個可執行程式的位址映射到源檔案的對應行
gprof

C語言編譯工作流程

繼續閱讀