我們平時寫的.c檔案是如何編譯的呢。下圖很好的诠釋了這一過程
主要有四個步驟
第一步預處理:使用預處理器(cpp)處理C語言檔案中的預處理指令。這時候C語言檔案還是一個.c檔案.
第二部編譯:使用C編譯器gcc,将C語言源碼檔案編譯成彙編檔案file.s。
第三步彙編:使用彙編器as将彙編代碼彙編成二進制的.o檔案(又稱目标檔案)。
第四步連結:最後使用連結器ld将目标檔案和目标檔案中用到的一些庫檔案進行連結生成linux下elf格式的可執行檔案,這個可執行檔案才可以在linux平台下面運作。
下面是目标檔案的連結過程
首選介紹下目标檔案的構成:
每一個目标檔案都由這三段組成
關于連結器簡單講就是一個組裝器,它的作用是将目标檔案(零件)組合成可執行檔案(一台機器),連結腳本檔案(安裝圖紙)的作用是決定目标檔案中的某個段放在可執行檔案中的位置。圖中file就是可執行檔案。
連結腳本檔案:
注意這條指令:arm-linux-ld -o hello hello.o main.o -T hello.lds
ld是連結器,将多個目标檔案(hello.o和main.o)連結生成一個可執行檔案
(hello),通過-T指定連結腳本檔案