首先是图1-3展示的一个helloworld程序的整个执行过程。
1:预处理阶段
预处理器(cpp)根据以字符#开头的语句,修改原始的C程序。比如#include命令,就会告诉预处理器把头文件中的内容直接插入到程序文本中,得到了另一个C程序,通常以.i作为后缀名。
2:编译阶段
编译器(ccl) (compiler) 负责把hello.i 翻译为汇编语言hello.s,包含了一个汇编语言程序。 汇编语言为不同的高等语言的不同编译器提供了通用的输出语言。
3:汇编器
汇编器(as)会把汇编语言翻译为机器指令语言,保存在hello.o 中,是二进制文件。
4:链接器(ld)
在hello的main中调用了已定义好的printf函数,该函数是每个C编译器都提供的标准C库中的一个函数。printf函数存在于名为printf.o的单独的预编译好了的目标文件中,链接器负责把这个文件合并到hello.o中,结果得到一个hello文件,这是一个可执行的二进制文件,可以被加载到内存中由系统执行。