一个共享库文件(.so文件)由多个模块(.o文件)生成。在生成共享库文件的过程中,需要对.o文件进行处理,以生成位置无关代码。以下有关位置无关代码(PIC)生成的叙述中,错误的是( )。
A: 模块内函数之间的调用可用PC相对地址实现,无需动态链接器进行重定位
B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定
C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址
D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
A: 模块内函数之间的调用可用PC相对地址实现,无需动态链接器进行重定位
B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定
C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址
D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
举一反三
- 一个共享库文件(.so文件)由多个模块(.o文件)生成。在生成共享阵文件的过程中,需要对o文件进行处理,以生成位置无关代码。以下有关位置无关代码(PIC)生成的叙述中,错误的是 A: 模块内函数之间的调用可用PC相对地址实现。无需动态链接器进行重定位 B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定 C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址 D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
- 以下是有关动态链接及其所链接的共享库以及动态链接生成的可执行目标文件的叙述,其中错误的是( )。? 可执行目标文件由动态链接器对可重定位目标文件和共享库中部分信息进行链接而成|生成的可执行目标文件是部分链接的,也即,其中还有部分引用没有进行重定位|可执行目标文件在加载或执行时,系统将会调出动态链接器利用共享库对其进行动态链接|共享库在Linux下称为动态共享对象(.so),在Windows下称为动态链接库(.dll)
- 共享库文件是一种特殊的可重定位目标文件,其中记录了相应的代码、数据、重定位和符号表信息,能在可执行目标文件装入或运行时被动态地装入到内存并自动被链接,这个过程称为动态链接(dynamiclink),由一个称为()的程序来完成。
- 【单选题】以下不属于地址重定位(地址变换)的是() A. 静态地址重地位 B. 动态地址重定位 C. 运行时链接地址重定位 D. 读入重定位
- 【判断题】在开发DSP系统时,常常需要编写汇编语言源程序、C语言源程序和链接命令文件(CMD文件)。C语言文件经过C编译器编译后生成汇编源文件,所有汇编源文件经过汇编器汇编后生成通用目标文件格式(COFF)的文件。链接器再通过链接命令文件将COFF文件里面的段进行程序重定位链接,最后生成可执行文件