程式的翻譯和鏈結

2021-09-24 03:03:54 字數 742 閱讀 4827

程式的翻譯簡單來說就是將原始檔轉換成可執行程式。

下面有一張圖可以形象的說明這個過程

從上圖可以看出,原始檔是通過編譯器先轉換成目標檔案,目標檔案再通過鏈結器轉換成可執行程式。

那麼程式的翻譯具體分為那幾步呢?

大的來說程式的翻譯過程分為兩步,分別是編譯和鏈結,而編譯又可以分為三步:1.預處理 2.編譯 3.彙編

預處理(-e):預處理也包括四個步驟 標頭檔案展開 巨集替換 去注釋 條件編譯

編譯(-s):預處理完之後停下來。

彙編(-c): 將組合語言變成二進位制目標檔案

說的再多不如來張圖看的清楚:

file 進行編譯的原始檔

line 檔案當前的行號

date 檔案被編譯的日期

time 檔案被編譯的時間

stdc 如果編譯器遵循ansi c,其值為1,否則未定義

在linux中 .代表當前目錄

… 代表上級目錄

define(巨集)

注意:定義巨集時後面不能加分號

巨集不僅可以進行簡單的變數替換還可以進行引數替換

巨集替換是由內而外的

巨集只是簡單的文字替換和函式是由本質的區別,不能當作函式來使用

程式的裝入和鏈結

編譯 鏈結 裝入 編譯 預處理 編譯 優化 彙編 靜態鏈結 動態鏈結 1 靜態鏈結 2 裝入時動態鏈結 3 執行時動態鏈結 裝入 靜態裝入 動態裝入 1 絕對裝入方式 這種方式在編譯的時候就會產生絕對位址 程式中的邏輯位址就是實際的實體地址 在裝入的時候不需要對位址和資料進行修改。缺點 只能將目標模...

程式的編譯和鏈結

一般來說,無論是c c 還是pas,首先要把原始檔編譯成中間 檔案,在windows下也就是 obj 檔案,unix下是 o 檔案,即 object file,這個動作叫做編譯 compile 然後再把大量的 object file合成執行檔案,這個動作叫作鏈結 link 編譯時,編譯器需要的是語法...

程式的裝入和鏈結

注 這是本人學習湯小丹等編寫的計算機作業系統 西安電子科技大學出版社 的學習筆記,因此許多引用 於此書,在正文中就不註明了!程式在執行前需要經過以下步驟 編譯程式對源程式進行編譯生成目標程式.obj 鏈結程式將目標程式和需要的庫檔案鏈結在一起形成可執行程式.exe,即乙個完整的裝入模組 裝入程式將裝...