共享库文件是一种特殊的可重定位目标文件,其中记录了相应的代码、数据、重定位和符号表信息,能在可执行目标文件装入或运行时被动态地装入到内存并自动被链接,这个过程称为动态链接(dynamiclink),由一个称为()的程序来完成。
举一反三
- 以下是有关动态链接及其所链接的共享库以及动态链接生成的可执行目标文件的叙述,其中错误的是( )。? 可执行目标文件由动态链接器对可重定位目标文件和共享库中部分信息进行链接而成|生成的可执行目标文件是部分链接的,也即,其中还有部分引用没有进行重定位|可执行目标文件在加载或执行时,系统将会调出动态链接器利用共享库对其进行动态链接|共享库在Linux下称为动态共享对象(.so),在Windows下称为动态链接库(.dll)
- 以下关于ELF可重定位和可执行两种目标文件格式比较的叙述中,错误的是( )。? 可重定位目标文件中有初始化程序段.init节,而在可执行目标文件中则没有|可执行目标文件的ELF头中有具体程序入口地址,而在可重定位目标文件中则为0|可执行目标文件中有程序头表(段头表),而在可重定位目标文件中则没有|可重定位目标文件中有可重定位节.rel.text和.rel.data,而在可执行目标文件中则没有
- 在装入一个目标模块是,若发生一个外部模块调用事件,则找到相应的外部目标模块并将其装入到内存的链接方式是( )。 A: 静态链接 B: 装入时动态链接 C: 运行时动态链接
- 一个共享库文件(.so文件)由多个模块(.o文件)生成。在生成共享库文件的过程中,需要对.o文件进行处理,以生成位置无关代码。以下有关位置无关代码(PIC)生成的叙述中,错误的是( )。 A: 模块内函数之间的调用可用PC相对地址实现,无需动态链接器进行重定位 B: 模块内数据的引用无需动态链接器进行重定位,因为引用与定义间相对位置固定 C: 模块外数据的引用需要动态链接器进行重定位,重定位时在GOT中填入外部数据的地址 D: 模块间函数调用需要动态链接器进行重定位,重定位时在GOT和PLT中填入相应内容
- 程序的装入方式有三种:、可重定位装入方式、动态运行时装入方式。