簡單來說,我們從源文件到可執行文件要經歷四大階段:預處理階段、編譯階段、匯編階段、鏈接階段。在Linux中,程序員可以根據自己的需要讓GCC在編譯的任何階段結束,並生成相應的文件
此處以hello.c作為例子
<span >#include<stdio.h>
int main()
{
printf("hello world!");
return 0;
}</span>
1.預處理階段:對以#開頭的語句進行處理,且不進行語法的檢查
預處理階段主要完成的三個功能:
①加載頭文件--Linux系統中的頭文件在 /user/include/stdio。
<span >#include<stdio.h> //把頭文件stdio.h中的內容加載到hello.c中的首部</span>
②宏替換
<span > #define N 10</span>
③條件處理--#ifdef,#else,#endif
<span > #include<stdio.h>
#define N 10
int main()
{
#ifdef N
printf("hello world!");
#else
printf("welcome to you!");
#endif
return 0;
}</span>
2.編譯階段:對程序進行語法分析,詞法分析,語義分析
<span > gcc -S hello.i -o hello.s //生成.o文件</span>
3.匯編階段:把匯編程序翻譯成CPU可識別識別的二進制文件,該文件又稱為目標文件
<span > gcc -c hello.s -o hello.o //生成.s文件</span>
4.鏈接階段:把程序中所有木匾文件和所需要庫文件都鏈接在一起,最終生成一個可以直接運行的文件,稱為可執行文件。
<span > gcc hello.o -o hello //生成可執行文件</span>
<span > ./hello // 執行該文件</span>
小編初來乍到很多方面都寫的不好,推薦下列博文哦,希望能幫到大家(*^__^*) 嘻嘻……點擊打開鏈接/content/6179951.html