1. 程式人生 > >一個C語言程式的編譯過程

一個C語言程式的編譯過程

這是一個再簡單不過的C語言程式:

#include <stdio.h>

int main()
{
    printf("hello world!\n");
    return 0;
}

執行gcc test.c,就使一個原始檔變成了可執行檔案,這個步驟我們很熟悉,但是從一個原始檔(.c檔案)到可執行程式到底經歷了哪幾步,每一步具體做了什麼,這是我想要總結一下的:

一:預處理
使用-E選項:gcc -o test.i -E test.c
預處理階段主要做了處理“#”的過程:有標頭檔案展開,巨集替換,條件編譯,去掉註釋等。

二:編譯
使用-S選項:gcc -o test.s -S test.c
編譯階段將高階語言翻譯成機器語言,生成對應的彙編程式碼。

三:彙編
使用-c選項:gcc -o test.o -c test.c
彙編階段主要將原始檔翻譯成二進位制檔案。

四:連結
連結過程主要將翻譯成的二進位制檔案與需要用到的庫連結。

gcc的這三個選項不太好記,我有一個竅門,就是ESc,剛好就是鍵盤上的esc鍵,這樣就很快記住了,而三個選項對應的命名風格,為iso。