![](https://lstatic.shangxueba.com/sxbzda/h5/images/m_q_title.png)
假定a和b是可重定位目标文件或静态库文件,a→b表示b中定义了一个被a引用的符号。对于以下每一小
文件或静态库文件参数),使得链接器能够解析所有符号引用。
(I ) p.o→libx.a→liby.a→ p.o
(2) p.o→libx.a→liby.a 同时 liby.a→libx.a
(3) p.o→libx.a→liby.a→ libza 同时 liby.a→ libx.a→libz.a
![](https://lstatic.shangxueba.com/sxbzda/h5/images/tips_org.png)
文件或静态库文件参数),使得链接器能够解析所有符号引用。
(I ) p.o→libx.a→liby.a→ p.o
(2) p.o→libx.a→liby.a 同时 liby.a→libx.a
(3) p.o→libx.a→liby.a→ libza 同时 liby.a→ libx.a→libz.a
第1题
A.在可重定位目标文件的.rel.data节中,有一个与bufp1相关的重定位条目
B.在可重定位目标文件的.rel.text节中,有一个与buf相关的重定位条目
C.在相应的重定位条目中,对bufpl和buf的引用均采用绝对地址方式
D.可用一条mov指令实现该赋值语句,该mov指令中有两处需要重定位
第2题
A.bufpl的地址为0x8048938,重定位前的内容为04H、00H、00H、00H
B.在可重定位目标文件的.rel.data节中,有一个引用buf的重定位条目
C.在相应的重定位条目中,对bufp1和buf的引用均采用绝对地址方式
D.在可执行目标文件中,地址0x8048938开始的4个字节为34H、89H、04H,08H
第3题
第4题
A.可重定位目标文件中有可重定位节.rel.text和.rel.data.在可执行目标文件中则没有
B.可重定位目标文件中有初始化程序段.init节,在可执行目标文件中则没有
C.可执行目标文件中有程序头表(段头表),在可重定位目标文件中则没有
D.可执行目标文件的ELF头中有具体程序人口地址,在可重定位目标文件中则为0
第5题
A.可重定位目标文件是ELF格式的链接视图,由不同的节组成
B.可执行目标文件是ELF格式的执行视图,由不同的段组成
C.可重定位和可执行两种目标文件中的数据都是二进制表示的补码形式
D.可重定位和可执行两种目标文件中的代码都是二进制表示的指令形式
第6题
A.共享库在Linux下称为动态共享对象(.so),在Windows下称为动态链接库(.dll)
B.生成的可执行目标文件是部分链接的,也即其中还有部分引用没有进行重定位
C.可执行目标文件由动态链接器对可重定位目标文件和共享库中部分信息进行链接而成
D.可执行目标文件在加载或执行时,系统将会调出动态链接器利用共享库对其进行动态链接
第7题
A.将每个符号引用与唯一的一个符号定义进行关联.
B.将每个.o文件中的.data节、.text节和.bss节分别合并
C.确定每个符号(包括全局变量和局部变量)的首地址
D.根据所定义符号的首地址对符号的引用进行重定位
第8题
A.重定位信息是由编译器在生成汇编指令时产生的
B.指令中的重定位信息在可重定位目标文件的.rel.text节中
C.数据中的重定位信息在可重定位目标文件的.rel.data节中
D.重定位信息包含需要重定位的位置、绑定的符号和重定位类型
第9题
A.模块内函数之间的调用可用PC相对地址实现.无需动态链接器进行重定位
B.模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定
C.模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址
D.模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
第10题
假设一个C语言程序有两个源文件: main.c 和test.c,它们的内容如图4.1所示。
对于编译生成的可重定位目标文件test.o,填写表4.1中各符号的情况,说明每个符号是否出现在test.o的符号表(.symtab节)中,如果是,定义该符号的模块是main.o还是test.o?该符号的类型是全局、外部,还是本地符号?该符号出现在相应定义模块的哪个节(.text、.data或,bss) ?
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!