第一步:预处理阶段
终端编译代码: gcc -E demo1.c -o demo1.i 对demo1.c作预处理生成demo1.i
1)头文件展开
2)宏替换(傻瓜式替代)
傻瓜式替代例:
#include
#define Phi 3+3//宏
#define add(x) x+x//带参宏
int main(int argc,char ** argv){
printf("%d\n",Phi*Phi);//3+3*3+3 傻瓜式替代
printf("%d\n",add(3)*add(3));//3+3*3+3
return0;
}
3)去注释
4)上标记(给每一行代码标记上行号)
第二步:编译阶段
终端编译代码:gcc -S demo1.i -o demo1.s
编译阶段,计算机会对需要编译的文件进行词法、语法、语义分析,并进行优化以及确保正确。当以上所有语法正确时,生成汇编文件。这个整个编译过程中最核心最重要的一步。
第三步:汇编阶段
终端编译代码:gcc -c demo1.s -o demo1.o
将每一条汇编语言,汇编成计算机能识别的计算机语言
第四步: 链接阶段
终端编译代码:gcc demon1.o -o demon1
将汇编文件链接动态库及静态库,生成可执行文件