預處理 編譯 彙編 鏈結介紹

2021-10-17 23:36:12 字數 752 閱讀 6656

1)預處理

編譯器將c源**中的標頭檔案展開、定義的巨集進行替換、去掉注釋、條件編譯

1. gcc -e hello.c -o hello.i
2)編譯

編譯器檢查預處理**中的語法,並將其翻譯成彙編**。

2. gcc -s hello.i -o hello.s
3)彙編

編譯器將彙編**轉換成二進位制機器碼。

3. gcc -c hello.s -o hello.o
4)鏈結

編譯器將生成的.o檔案全部鏈結到一起生成可執行檔案

4. gcc hello.o -o hello.exe
靜態鏈結

靜態鏈結是將上一步**中需要的所有.o檔案鏈結到一起,生成乙個可執行檔案。例如乙個helloworld的可執行檔案裡面可能就包含了主函式hello.o、輸出函式printf.o、標準輸出stdio.o等等這些需要使用的函式或變數鏈結到一起。其優點就是不會隨著hello.o,printf.o,stdio.o這些檔案的改變而改變該二進位制檔案的功能,穩定而且執行時所有需要的東西都已經備齊,速度快。但是缺點就是浪費空間,每個執行檔案都對於需要的檔案都要有乙個副本。

動態鏈結

動態鏈結在執行時才會將所有的東西鏈結起來,所以在程式鏈結階段只是將一些重定位和符號資訊拷貝過來,等到執行時首先會在記憶體中搜尋是否已經有此庫函式的拷貝,有就直接用,沒有再去定位搜尋載入。

預處理 編譯 彙編 鏈結

1.預處理 預處理器 預處理階段主要處理 include 和 define 它把 include包含進來的 h 檔案插入到 include 所在的位置,把源程式中使用到的用 define 定義的巨集用實際的字串代替。2.編譯階段 編譯器 在這個階段,編譯器先要檢查 的規範性和語法錯誤等,以確定 的實...

預處理,編譯, 優化, 彙編, 鏈結

編譯,編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言,並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處理讀...

預處理,編譯, 優化, 彙編, 鏈結

編譯程式讀取源程式 字元流 對之進行詞法和語法的分析,將高階語言指令轉換為功能等效的彙編 再由匯程式設計序轉換為機器語言 目標檔案 並且按照作業系統對可執行檔案格式的要求鏈結生成可執行程式。c源程式標頭檔案 預編譯處理 cpp 編譯程式本身 優化程式 匯程式設計序 鏈結程式 可執行檔案 1.編譯預處...