C語言編譯和鏈結過程簡介

2021-08-19 19:59:32 字數 1059 閱讀 6922

一、編譯過程簡介

編譯過程可以分為4部分內容組成

預處理器->編譯器->彙編器->鏈結器

1、預處理器

(1)、處理所有的注釋,以空格代替

(2)、講所有的#define刪除,並且展開所有的巨集定義

(3)、處理條件編譯指令#if,#ifdef、#elif,#else、#endif

(4)、處理#include,展開檔案包含

(5)、保留編譯器需要使用#pragma指令

預處理指令示例:

gcc -e file.c -o file.i

2、編譯器

(1)、對預處理檔案進行語法分析、詞法分析、語義分析

語法分析:分析表示式是否遵循語法規則

詞法分析:分析關鍵字,識別符號,立即數是否合法

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

(2)、分析結束後進行**優化生成相應的彙編**檔案

編譯指令示例:

gcc -s file.i -o file.s

3、彙編器

(1)、彙編器將彙編**轉變為機器可以執行的指令,也就是機器指令

(2)、每條彙編指令幾乎都對應一條機器指令

彙編指令示例:

gcc - c file.s -o file.o

二、鏈結過程簡介

鏈結是指將目標檔案最終生成可執行檔案

鏈結器的意思:鏈結器的主要作用是把各個模組之間相互引用部分處理好,使得各個模組之間能夠正確的鏈結

(1)、可執行程式在執行時才動態載入庫進行連線

(2)、庫的內容不會進入可執行程式                        

參考資料「狄泰軟體c語言高階教程」

c語言編譯 鏈結過程

c語言的編譯鏈結過程 把c程式 源 轉換成可以在機器上執行的程式 可執行 需要進行編譯和鏈結的過程。1 編譯 主要包含兩個過程 1 預處理 巨集定義 檔案包含 條件編譯。在正式開始編譯之前根據預處理命令來修改原始檔的內容 2 編譯 優化 通過詞法分析和語法分析將指令翻譯成彙編 2 彙編 把組合語言 ...

C語言的編譯鏈結過程

編寫的乙個c程式 源程式 轉換成可以在硬體上執行的程式 可執行程式 需要進行翻譯環境和執行環境。翻譯環境則包括兩大過程編譯和鏈結,經過編譯和鏈結過程便可形成可執行程式。一 編譯 將文字形式的源 翻譯成計算機認識的機器語言 編譯又分為預處理器處理 編譯 彙編。1.預處理器處理 主要是進行文字操作,包括...

c 編譯鏈結過程

llinux下編譯乙個c 程式的典型過程 1.編譯預處理 預編譯程式完成的工作,可以說成是對源程式的 替換 工作。經過這個過程,生成乙個沒有巨集定義 沒有條件編譯指令 沒有特殊符號的輸出檔案。2.編譯 優化階段 通過詞法分析 語法分析,在確認所有的指令都符合語法規則之後,將其翻譯成等價的中間 或彙編...