预处理-pre-processor:将原先的.c文件里的宏定义展开,包含的头文件包含进来,即处理#。处理完后还是文本文件。
编译-compiler:将.c的代码变成.s的汇编语言,还是文本文件。
汇编-assembler:将汇编代码变成二进制文件,即可重定位目标文件
链接-Linker:将各个目标文件链接在一起,形成一个可执行文件。
最后编译出来的代码运行的内存地址是确定的,因为对于内存的取指的地址是固定的。
目标文件即.O文件包括了许多数据块,其中有代码段、数据段、指导链接的结构体。即ELF文件。