社区
王博俊的课程社区_NO_1
编译实战视频教程
帖子详情
重定位符号地址
果然令狐冲
2023-01-12 18:44:10
课时名称
课时知识点
重定位符号地址
...全文
70
回复
打赏
收藏
重定位符号地址
课时名称课时知识点重定位符号地址
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
linux
重定位
表
符号
表,什么是
符号
表、
符号
解析、
符号
重定位
?
1、什么是
符号
表?2、何为
符号
解析和
符号
重定位
?在链接中,将函数和变量统称为
符号
。函数名或变量名称为
符号
名。链接过程中很关键的一部分就是
符号
的管理,每一个目标文件都会有一个相应的
符号
表,这个表里记录了目标文件中所用到的所有
符号
。每一个定义的
符号
有一个对应的值,叫做
符号
值。对于函数和变量来说,
符号
值就是它们的
地址
。
符号
表中所有的分类:1.定义在本目标文件的全局
符号
,可以被其他目标文件引用。2.在本目...
编译链接实战(14)
符号
重定位
与
重定位
表
符号
重定位
可以进行这种修正,使得程序中的
符号
引用指向正确的内存位置。这就是
符号
重定位
的作用:将
符号
的引用解析为实际的内存
地址
。3、对于每个
重定位
条目,程序加载器通过
符号
表找到引用的
符号
,并将其
地址
与
重定位
类型和附加信息一起应用于
重定位
位置,以计算出最终的内存
地址
。
符号
重定位
是实现动态链接和
符号
解析的关键步骤,它使得程序能够充分利用共享库和模块化设计,实现更高效和灵活的软件开发与部署。通过
符号
重定位
,程序在运行时能够解析和访问其他对象文件或共享库中定义的
符号
,实现模块之间的
符号
引用和互操作。
符号
重定位
和段
重定位
即使在将两种
重定位
同意对待的链接器中,此二者仍然有一个重要区别,
符号
引入会包括两个参数,
符号
所在的段的基
地址
和
符号
在段内的偏移
地址
,而段就只有基
地址
,没有偏移量了。
重定位
和
符号
解析所要求的条件有些许不同,对于
重定位
,需要调整的基
地址
的数量相当小,也就是一个输入文件中的段的个数,不过按目标文件格式的要求。一旦链接器决定了每个段的位置,它就需要相应的调整程序中存储的
符号
地址
。调整程序中的段间引用,需要根据目标
地址
新的段
地址
进行重新计算并调整,相对
地址
的引用,则需要根据目标段
地址
以及引用者所在段的
地址
进行调整。
符号
解析与
重定位
重定位
编译器并不知道引用
符号
的真正
地址
,暂时用临时的假
地址
代替着,把真正的
地址
计算工作留给了链接器,链接器可以根据
符号
的
地址
对每个需要
重定位
的指令进行地位修正。
重定位
表 在ELF文件中,有一个叫
重定位
表的结构专门用来保存这些鱼
重定位
相关的信息。对于可
重定位
的ELF文件来说,它必须包含有
重定位
表,用来描述如何修改相应的段里的内容。 每个要被
重定位
的地方叫一个
重定位
入口(Relocation En...
符号
引用
重定位
重定位
PC相对引用 简单讲解
目录链接
符号
引用
重定位
简介例子
重定位
条目简介offsettypesymboladdend
重定位
PC相对引用
重定位
PC绝对引用 链接
符号
引用
重定位
简介 我们知道一个.c文件可以被编译为.o文件,即目标文件,而假如一个.c中引用了别的.c中的函数或者是变量,这时候的.o其实是不知道引用函数实际的内存位置的,也就无法跳转,这就需要【
重定位
】的操作了,而针对函数名(也是
符号
)的
重定位
例子 我们编写两个.c文件,分别是main.c和func.c,main.c引用了func.c中的func函数 // main.c
王博俊的课程社区_NO_1
1
社区成员
31
社区内容
发帖
与我相关
我的任务
王博俊的课程社区_NO_1
网名,果然令狐冲,从事IT行业已10多年,拥有丰富的项目及产品开发经验。《自己动手写编译器、链接器》一书作者。
复制链接
扫一扫
分享
社区描述
网名,果然令狐冲,从事IT行业已10多年,拥有丰富的项目及产品开发经验。《自己动手写编译器、链接器》一书作者。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章