編譯器和鏈接器的工作過程

預編譯

         處理所有的註釋,用空格代替

         將所有的#define刪除,將所有的宏定義展開

         處理條件編譯指令#ifdef  #elif  #else  #endif

         處理#include,展開被包含的文件

         保留編譯器需要使用的#pragma

預處理指令:

        gcc -E file.c -o file.i


編譯:

         對預處理文件進行一系列詞法分析,語法分析和語義分析

                   詞法分析主要分析關鍵字、標示符、立即數等是否合法

                   語法分析主要分析表達式時候遵循語法規則

                   語義分析在語法分析的基礎上進一步分析表達式是否合法

          分析結束後進行代碼優化生成相應的彙編代碼文件

 編譯指令:

          gcc -S file.c -o file.s


彙編

           彙編器將彙編代碼轉變成機器可以執行的指令

                     每個彙編語句機會都對應一條機器指令


  彙編指令:

                gcc -c file.s -o file.o       


連接器的主要作用是把各個模塊之間相互作用的部分處理好,使得各個模塊之間能夠正確的銜接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章