发动融合卡!
- 将多个单独的代码节 (sections)和数据节合并为单个节。
- 将符号从它们在 .o文件中的相对位置重新定位到可执行文件中的最终绝对内存位置
- 用它们的新位置,更新所有对这些符号的引用

一旦链接器完成了符号解析这一步,就把代码中的每个符号引用和正好一个符号定义关联起来
此时,链接器就知道它的输入目标模块中的代码节和数据节的确切大小
就可以开始重定位步骤了
在这个步骤中,将合并输入模块,并为每个符号分配运行时地址,重定位由两步组成
重定位节和符号定义
在这一步中,链接器将所有相同类型的节合并为同一类型的新的聚合节
例如,来自所有输入模块的. data 节被全部合并成一个节,这个节成为输出的可执行目标文件的. data 节
链接器将运行时内存地址赋给新的聚合节
赋给输入模块定义的每个节
赋给输入模块定义的每个符号
这一步完成时,程序中的每条指令和全局变量都有唯一的运行时内存地址了
重定位节中的符号引用
链接器修改代码节和数据节中对每个符号的引用,使得它们指向正确的运行时地址
链接器依赖于可重定位目标模块中称为重定位条目(relocation entry)的数据结构