gcc程式的編譯過程和鏈結原理

2021-10-14 04:18:37 字數 538 閱讀 7469

1.預處理

處理標頭檔案

預處理就是將要包含(include)的檔案插入原檔案中、將巨集定義展開、根據條件編譯命令選擇要使用的**,最後將這些**輸出到乙個「.i」檔案中等待進一步處理。

gcc -e -o 001.i 001.c

2.編譯
編譯就是把c/c++**(比如上面的".i"檔案)「翻譯」成彙編**

gcc -s -o 001.s 001.i

3.彙編
彙編就是將第二步輸出的彙編**翻譯成符合一定格式的機器**,在linux系統上一般表現位elf目標檔案(obj檔案)

gcc -c -o 001.o 001.s

4.鏈結
鏈結就是將彙編生成的obj檔案、系統庫的obj檔案、庫檔案鏈結起來,最終生成可以在特定平台執行的可執行程式

gcc -o 001 001.o

四步合成一步
直接完成4個過程

gcc -o 001 001.o

gcc 編譯 鏈結原理

使用 ld linux.so.作為直譯器,是寫在二進位制檔案中的,比如上面編譯好的 demo 中。另外的,2 其它庫的查詢和載入,則是 ld linux.so.完成的。ldd 可執行檔名 檢視可執行檔案鏈結了哪些 系統動態鏈結庫 strip 可執行檔名 去除符號表可以給可執行檔案 ldconfig ...

GCC編譯和鏈結過程

gcc gnu compiler collection gnu 編譯器套件 是由 gnu 開發的程式語言編譯器。它是以 gpl許可證所發行的自由軟體,也是 gnu計畫的關鍵部分。gcc原本作為 gnu作業系統的官方編譯器,現已被大多數類 unix 作業系統 如 linux bsd mac os x ...

程式的編譯和鏈結過程

c語言的編譯鏈結過程要把我們編寫的乙個c程式 源 轉換成可以在硬體上執行的程式 可執行 需要進行編譯和鏈結。編譯就是把文字形式源 翻譯為機器語言形式的目標檔案的過程。鏈結是把目標檔案 作業系統的啟動 和用到的庫檔案進行組織形成最終生成可載入 可執行 的過程。將乙個.c檔案編譯鏈結成.exe檔案,需要...