Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

共享目标文件处理

共享目标文件是一个或多个输入文件的上一次链接编辑生成的不可分割完整单元。链接编辑器处理共享目标文件时,共享目标文件的所有内容将成为生成的输出文件映像的逻辑部分。包含此逻辑部分意味着,链接编辑过程可以使用在共享目标文件中定义的所有符号项。

链接编辑器不使用共享目标文件的程序数据节和大多数链接编辑信息节。绑定共享目标文件以生成可运行的进程时,运行时链接程序将解释这些节。但是,会记录出现的共享目标文件。信息存储在输出文件映像中,以表明此目标文件是运行时必须使用的依赖项。

缺省情况下,链接编辑过程中指定的所有共享目标文件在要生成的目标文件中都记录为依赖项。无论要生成的目标文件实际上是否引用共享目标文件提供的符号,都会进行此记录。为了最大程度地降低运行时链接的开销,请仅指定将解析所生成目标文件中的符号引用的那些依赖项。可以使用链接编辑器的调试功能和带有 –u 选项的 ldd(1) 确定未使用的依赖项。可以使用链接编辑器的 –z discard-unused=dependencies 选项来禁止任何未使用的共享目标文件的依赖项记录。另请参见删除未使用的依赖项

如果某个共享目标文件依赖于其他共享目标文件,则也会处理这些依赖项。处理完所有命令行输入文件后将进行此处理,以完成符号解析过程。不过,在要生成的输出文件映像中,不会将共享目标文件名称作为依赖项进行记录。

虽然在命令行上共享目标文件的位置没有在归档处理中那么重要,但是该位置可能会影响全局。可重定位目标文件与共享目标文件之间以及多个共享目标文件之间允许存在多个名称相同的符号。请参见符号解析

链接编辑器处理共享目标文件的顺序由存储在输出文件映像中的依赖项信息维护。在无延迟装入的情况下,运行时链接程序按相同的顺序装入指定的共享目标文件。因此,链接编辑器和运行时链接程序选择多重定义的一系列符号中第一次出现的某个符号。


注 -  多个符号定义在使用 –m 选项生成的装入映射输出中报告。