歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

GCC編譯過程

1.GCC的定義

GNU CC是GNU項目中ANSI C 標准的編譯系統。可編譯c,c++,java。gcc 是一個交叉平台編譯器,他能夠在當前cpu平台上為多種不同體系,結構的硬件平台開發軟件2.GCC的過程

源程序——預處理——編譯——匯編——鏈接——可執行文件

1) 預處理:不做語法檢查

命令行:gcc -E hello.c

由於預處理之後程序過多,一般將預處理之後的命令行放在hello.i中:gcc

-E hello.c > hello.i

預處理所處理的文件:1.頭文件加載

2.宏定義

3.[u]條件編譯[/u]

所謂條件編譯就是:

#include<stdio.h>

#define max 100

int main()

{

int a[max];

#ifdef max;

printf(“hello \n”);

//已經設置max的值,輸出hello

#else

printf(“nihao\n”);

//沒有設置max,輸出nihao

#endif

return 0;

}

2)編譯 :進行語法檢查,詞法分析

命令行:gcc -c hello.c 生成hello.o

3)匯編:匯編器是將匯編代碼轉變成機器可以執行的命令,每一個匯編語句幾乎都對應一條機器指令。

命令行:gcc -w hello.c //生產helllo.s,該文件為目標文件

4)鏈接

目標代碼不能直接執行,要想將目標代碼變成可執行程序,還需要進行鏈接操作,才會生成真正可以執行的可執行程序。鏈接操作最重要的步驟就是將函數庫中相應的代碼組合到目標文件中。鏈接器ld將各個目標文件組裝在一起,解決符號依賴,庫依賴關系,並生成可執行文件。

Copyright © Linux教程網 All Rights Reserved