hello.c
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
gcc hello.c 将会生成a.out
在hello.c到a.out这个过程到底是经历了哪几个阶段,gcc帮我们做了什么,a.out是怎么生成
hello.c ->a.out主要经历了四个阶段:预处理,编译,汇编,链接
一:预处理
预处理主要是处理源代码中以#开始的预编译指令,比如#include,#define
将所有的#define删除,展开宏定义
处理所有的条件编译指令#if,#ifdef,#elif,#else,#endif
处理#include预编译指令,将被包含的头文件插入该预编译指令的位置,是个递归的过程
删除所有的注释 //与/**/
添加行号与文件名表示,用于调试符号与编译错误或警告报错
保留#pragma编译指令,改指令 编译器需要使用
二:编译
编译过程就是把预编译生成的文件进行一系列词法分析&#