首页 > 其他 > 详细

程序的链接——符号解析

时间:2021-06-05 18:32:59      阅读:12      评论:0      收藏:0      [点我收藏+]

再回顾一下链接的步骤

  • 确定符号引用关系(符号解析)
  • 合并相关 .o 文件(重定位)
  • 确定每个符号的地址(重定位)
  • 在指令中填入新的地址(重定位)
 
技术分享图片
 

在这一篇博客中,我们主要负责符号解析的理解

符号解析到底做了什么

确定符号引用关系,将每个模块中引用的符号与某个目标模块的定义符号建立关联

看到上面的 P0.o 和 P1.o 中的箭头了吗。符号解析就是去干箭头干的活。

也就是说,每个定义符号在代码段(函数)和数据段(变量)都分配了存储空间,将引用符号定义符号建立关联后,就可以在重定位时将引用符号的地址重定位为相关联的定义符号的地址

为了能建立这样的联系,定义了一个叫做「符号表」(symbol table)的东西

所以符号解析的整体过程如下:

  • 程序中有定义和引用的符号(包括函数和变量)
  • 编译器将定义的符号放在符号表
    • 符号表是一个结构数组
    • 每个表项包含符号名、长度位置等信息
  • 链接器将每个符号的引用都与一个确定的符号定义建立关联


作者:madao756
链接:https://www.jianshu.com/p/2786533a34c9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

程序的链接——符号解析

原文:https://www.cnblogs.com/feng9exe/p/14852551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!