以下是有关动态链接及其所链接的共享库以及动态链接生成的可执行目标文件的叙述,其中错误的是( )。? 可执行目标文件由动态链接器对可重定位目标文件和共享库中部分信息进行链接而成|生成的可执行目标文件是部分链接的,也即,其中还有部分引用没有进行重定位|可执行目标文件在加载或执行时,系统将会调出动态链接器利用共享库对其进行动态链接|共享库在Linux下称为动态共享对象(.so),在Windows下称为动态链接库(.dll)
举一反三
- 下列叙述何者错误? A: 链接是指将目标文件最终生成可执行文件 B: 静态链接中目标文件不可直接进入可执行文件 C: 动态链接是在程序启动后才动态加载目标文件 D: 动态链接中库的内容不会进入可执行程序
- 共享库文件是一种特殊的可重定位目标文件,其中记录了相应的代码、数据、重定位和符号表信息,能在可执行目标文件装入或运行时被动态地装入到内存并自动被链接,这个过程称为动态链接(dynamiclink),由一个称为()的程序来完成。
- 一个共享库文件(.so文件)由多个模块(.o文件)生成。在生成共享库文件的过程中,需要对.o文件进行处理,以生成位置无关代码。以下有关位置无关代码(PIC)生成的叙述中,错误的是( )。 A: 模块内函数之间的调用可用PC相对地址实现,无需动态链接器进行重定位 B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定 C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址 D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
- 一个共享库文件(.so文件)由多个模块(.o文件)生成。在生成共享阵文件的过程中,需要对o文件进行处理,以生成位置无关代码。以下有关位置无关代码(PIC)生成的叙述中,错误的是 A: 模块内函数之间的调用可用PC相对地址实现。无需动态链接器进行重定位 B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定 C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址 D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
- execve系统调用加载需要动态链接的可执行文件前要先加载其依赖的动态链接库(共享库)。