静态链接
1. 空间与地址分配
1.1 按序叠加
将输入的目标文件按照次序叠加起来。
1.2 相似段合并
将相同性质的段合并到一起
两步链接法:第一步,空间与地址分配,第二步,符号解析与重定位
1.3 符号地址的确定
bss段不占用文件的空间,但是它在装载时占用地址空间。
2. 符号解析与重定位
在完成空间和地址的分配步骤后,链接器就进入了符号解析与重定位的步骤,这也是静态链接的核心内容。
2.1 重定位
2.2 重定位表
2.4 指令修正方式
绝对寻址修正和相对寻址修正的区别就是绝对寻址修正后的地址为该符号的实际地址,相对寻址修正后的地址为符号距离被修正位置的地址差。
3. COMMON块
Common Block机制
编译器将未初始化的全局变量定义为弱符号处理。
C++ 编译器在很多时候会产生重复的代码,比如模板(Templates),外部内联函数(Extern Inline Function)和虚函数表(Virtual Function Table)
4. C++相关问题
5. 静态库链接
6. 链接过程控制
7. BFD库