C語言基礎 從編寫到執行的過程(編譯和鏈結)

2021-10-24 08:53:11 字數 1080 閱讀 1060

c是編譯型語言:

編寫c程式的7個步驟:

1.定義程式的目標

2.設計程式

3.編寫**

4.編譯

5.執行程式

6.測試和除錯程式

7.維護和修改程式

c程式設計的基本策略:用程式將源**檔案轉換為可執行檔案(其中包含可直接執行的機器語言**)

典型的c實現通過編譯和鏈結兩個步驟來完成。

編譯器把源**轉化成中間**

鏈結器把中間**和其他**合併,生成可執行檔案

1,源**(.c檔案)通過編譯器轉換為機器語言**,並把結果放在目標**檔案(.obj檔案)

在編譯之前還有預編譯

(1)將所有的#define刪除,並且展開所有的巨集定義。說白了就是字元替換

(2)處理所有的條件編譯指令,#ifdef #ifndef #endif等,就是帶#的那些

(3)處理#include,將#include指向的檔案插入到該行處

(4)刪除所有注釋

(5)新增行號和檔案標示,這樣的在除錯和編譯出錯的時候才知道是是哪個檔案的哪一行

(6)保留#pragma編譯器指令,因為編譯器需要使用它們。

在編譯之後,將源**轉換成彙編**,然後通過彙編,將彙編**轉換成機器語言**

2,目標**缺失啟動**(startup code)。啟動**充當著程式和作業系統直接的介面。在不同的作業系統下,目標**相同,但系統啟動**不同,因為系統處理程式的方式不同。

3,目標**還缺少庫函式。幾乎所有的c程式都要使用c標準庫中的函式。

4,鏈結器的作用就是:把編寫的目標**、系統的標準啟動**庫**這三部分合併成乙個檔案,即可執行檔案。對於庫**,鏈結器只會把要用到的庫函式**提取出來。

C語言從編譯到執行過程詳解

目錄 最近在看csapp 深入理解計算機系統 然後以前也學過c語言,但是從來沒有深究寫好的c 是怎麼編譯再到執行的。所以現在自己學習,然後記錄下來。以最常用的hello world!程式為例 程式名 main.c include int main hel程式設計客棧lo程式的生命週期是從乙個高階c語...

C語言基礎之 C 語言的編譯和執行過程

編譯 生成 檔案 連線 將目標 和c 函式的庫進行連線 生成可執行的二進位制機器 執行 在特定的系統的環境下執行c 語言 n 相當於打了 乙個回車 t 相當於乙個 tab 鍵 void main 防止為 return 0 省略的情況 是 計算機中一塊特定放入記憶體空間 錢包存錢 或者 銀行存錢 in...

C語言生成可執行檔案的過程

今天用gcc編譯器為大家演示一下c語言的編譯過程 首先,我們將貼上我們樸實無華的源 由.c 生成 o檔案 通過 gcc e main.c o main.i 執行c語言的預編譯過程,生成main.o檔案 讓我們懷著敬畏的心情瞧一瞧生成的main.o檔案是啥樣子 因為篇幅原因,上面截圖只展示原檔案的幾十...