解析静态链接

文章目录

  • 静态链接
    • 空间与地址分配
      • 相似段合并
      • 虚拟地址分配
      • 符号地址确定
    • 符号解析与重定位
    • 链接器优化
      • 重复代码消除
      • 函数链接级别
    • 静态库
    • 静态链接优缺点

静态链接

一组目标文件经过链接器链接后形成的文件即可执行文件,如果没有动态库的加入,那么这个可执行文件被加载后无需再进行重定位操作(符号已经在链接阶段全部得到重定位),这种方式即静态链接,静态链接的过程分为空间与地址分配+符号解析与重定位

空间与地址分配

空间与地址分配阶段链接器需要为各个节分配虚拟地址,分配虚拟地址的第一步就是要把各个目标文件的节进行合并,现代链接器都是采用相似段合并的方式对目标文件的节进行合并,所谓相似节合并,即多个目标文件的代码节合一起,数据节合一起

相似段合并

链接器扫描所有目标文件各个节的信息,获取其长度,对相似节进行合并,合并完后的节在代码段中称为段实际上ELF文件中既能称作节(section),也能称作段(segment),但是可执行文件中一般都是称为段,并且有个更专业的术语称为执行视图,而目标文件中的节称为链接视图

解析静态链接_第1张图片

虚拟地址分配

//a.c
extern int shared;
int main(){
   
    int a=0;

你可能感兴趣的:(链接,装载,库,静态链接)