《深入理解计算机系统》
程序翻译成不同格式
在unix系统上,从源文件到目标文件的转化是有编译器驱动程序完成的。
命令:gcc -o hello hello.c 这里GCC编译器驱动城区将hello.c翻译成一个目标文件hello,这个过程可分为4个步骤
- 预处理阶段:根据#开头的命令修改成宿 如#include<stdio.h>,读取系统头文件插入程序文本中
- 编译阶段:讲程序hello.i翻译成hello.s,也就是翻译成汇编语言
- 汇编阶段:将hello.s方已成机器语言指令并打包成hello.o
- 链接阶段:比如hello程序调用了printf函数,printf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,这个文件需要合并到hello.o的程序中,ld就负责这种合并,得到hello文件,可以被加载到内存中,由系统执行。