《深入理解计算机系统》

程序翻译成不同格式

在unix系统上,从源文件到目标文件的转化是有编译器驱动程序完成的。

命令:gcc -o hello hello.c    这里GCC编译器驱动城区将hello.c翻译成一个目标文件hello,这个过程可分为4个步骤

《深入理解计算机系统》

  1.  预处理阶段:根据#开头的命令修改成宿  如#include<stdio.h>,读取系统头文件插入程序文本中
  2. 编译阶段:讲程序hello.i翻译成hello.s,也就是翻译成汇编语言
  3. 汇编阶段:将hello.s方已成机器语言指令并打包成hello.o
  4. 链接阶段:比如hello程序调用了printf函数,printf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,这个文件需要合并到hello.o的程序中,ld就负责这种合并,得到hello文件,可以被加载到内存中,由系统执行。