一个编写好的c程序,在成为可执行前(比如打印出helloworld),需要经历四个步骤:
源程序-->
预处理-->编译器-->汇编器-->链接器-->可执行目标程序
文本 汇编文本 可重定位目标程序
源程序中有include 头文件,#defile宏定义等,在预处理时,统统替代进去,比如#define PRINCE 9,那源程序中的PRINCE会被全部替换为9;(hello.i)
编译器,则将预处理后的源文件,转换为汇编格式;比如a+b,会用ADD A B;表示。(汇编这是瞎写的,意思大概就是这样)(hello.s)
汇编器:将汇编文件,以一定格式翻译成机器语言,机器语言为二进制。(hello.o)
链接器:如果代码中调用到某些函数,比如使用到printf函数,就调用到printf.o,链接器做的工作就是把prinf.o和hello.o合并在一起,最终生成可执行文件hello。