《程序员自我修养》之第二章 编译和链接

1、在linux下,当我们使用gcc编译hello world程序时,可以分解为四个步骤,分别是预处理,编译,汇编,链接。如图所示:

(1)       预处理:相当于执行命令gcc –E hello.c –o hello.i

 

(2)       编译:就是将预处理后的文件进行词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件。

相当于执行命令 gcc –S hello.i –o hello.s

(3)       汇编:将汇编代码转换成机器代码

相当于执行命令 gcc –c hello.s –o hello.o

(4)       链接:

2、编译过程分为六步:

词法分析、语法分析、语义分析、源代码优化、代码生成、目标代码优化

 

3、链接过程主要包括了地址和空间分配、符号决议(符号绑定)和重定位。

最基本的静态链接过程如图所示

 

库其实是一组目标文件的包。

 

posted @ 2012-05-12 17:28  王耀it  阅读(188)  评论(0编辑  收藏  举报