以下是有关动态链接及其所链接的共享库以及动态链接生成的可执行目标文件的叙述,其中错误的是( )。? 可执行目标文件由动态链接器对可重定位目标文件和共享库中部分信息进行链接而成|生成的可执行目标文件是部分链接的,也即,其中还有部分引用没有进行重定位|可执行目标文件在加载或执行时,系统将会调出动态链接器利用共享库对其进行动态链接|共享库在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系统调用加载需要动态链接的可执行文件前要先加载其依赖的动态链接库(共享库)。
内容
- 0
当一个库被链接到可执行程序时,这个库中所有代码都复制到可执行程序中去,这种链接方法是() A: 静态链接 B: 动态链接 C: 运行时链接 D: 转移链接
- 1
当一个库被链接到可执行程序时,所有这个库中的代码都会复制到可执行程序中去,这种链接方法是()。 A: 静态链接 B: 动态链接 C: 运行时链接 D: 转移链接
- 2
( )和( )建立的目标文件,是一个可以在TMS320C54x器件上执行的文件。 A: 编译器,汇编器 B: 编译器,链接器 C: 汇编器,链接器 D: 编译器,链接器
- 3
编辑的.c文件经编译链接后可生成计算机可直接执行的.exe文件是()。 A: 源文件 B: 目标文件 C: 链接文件 D: 可执行文件
- 4
{编译过程中,对输入的若干目标文件*.o及库文件,汇聚成一个可执行的二进制代码文件是在以下_______阶段 A: 预处理 B: 编译 C: 汇编 D: 链接}