# 第七章 链接
链接是将各种代码和数据片段手机并组合成为一个单一文件的过程,这个文件可以被加载(复制)到内存中执行。
**静态链接**
链接可以在编译时由静态编译器完成,为了构造可执行文件,链接器必须完成两个主要任务:
- 符号解析
- 重定位
**目标文件**
目标文件纯粹是字节块的集合,包含程序代码,程序数据。有三种形式:
- 可重定位目标文件
- 可执行目标文件
- 共享目标文件
**可重定位目标文件**
ELF格式的文件,即可重定位目标文件,包含如下内容:
- .text:已编译程序的机器代码
- .rodata:只读数据,比如prinf语句中的格式串和开关语句的跳转表
- .data:已初始化的全局和静态C变量。局部C变量在运行时被保存在栈中,即不出现在.data节中�