編譯過程簡介

2021-07-26 17:56:57 字數 912 閱讀 6149

程式編譯連線的過程如下所示:

編譯器的工作包括:預編譯編譯彙編

預編譯:

•處理所有的注釋,以空格代替

•將所有的#define刪除,並且展開所有的巨集定義

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

•處理#include,展開被包含的檔案

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

編譯預處理指令:

gcc –e file.c –o hello.i

編譯:

•對預處理檔案進行一系列詞法分析,語法分析和語義分析

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

•語法分析主要分析表示式是否遵循語法規則

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

•分析結束後進行**優化生成相應的彙編**檔案

編譯指令:

gcc –s file.c –o hello.s

彙編:

•彙編器將彙編**轉變為機器可以執行的指令

•每個彙編語句幾乎都對應一條機器指令

彙編指令:

gcc –c file.s –o hello.o

連線:

聯結器的工作:連線

聯結器的主要作用是把各個模組之間相互引用的部分處理好,使得各個模組之間能夠正確的銜接。最後得到可執行的程式。連線又分為動態連線和靜態連線。

小結:

編譯過程簡介

被隱藏的過程 預編譯 處理所有的注釋,以空格代替 將所有的 define刪除刪除 並且展開所有的巨集定義 處理條件編譯指令 if,ifdef,elif,else,endif 處理 include 展開被包含的檔案 保留編譯器需要使用的 pragma指令指令 預處理指令 編譯 對預處理檔案進行一系列詞...

c 編譯過程簡介

編譯過程簡介 目標檔案 編譯後生成的檔案,以機器碼的形式包含了編譯單元裡所有的函式和資料 匯出符號表 未解決符號表 位址重定向表等 第二種是動態鏈結程式 動態庫 將它與另乙個可 執行檔案及其它的共享目標檔案結合到一起,建立乙個程序映象 可執行檔案 o檔案在編譯後就能獲得,但是庫檔案 可執行檔案都需要...

gcc簡介及編譯過程

1 編譯器 gcc 簡介 linux系統下的 gcc gnu c compiler 是gnu推出的功能強大 效能優越的多 平台編譯器,它是gnu的代表作品之一,gcc是可以在多種硬體平台上編譯出可 執行檔案的超級編譯器,其執行效率比一般的編譯器要高出20 30 編譯器能 將c c 語言源程式 組合語...