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

退出打印视图

更新时间: 2014 年 7 月
 
 

启用直接绑定

使用直接绑定的目标文件维护符号引用与提供定义的依赖项之间的关系。运行时链接程序使用该信息直接在关联目标文件中搜索符号,而不执行缺省符号搜索模型。

动态目标文件的直接绑定信息是在链接编辑时记录的。只能为通过该目标文件的链接编辑指定的依赖项建立该信息。可使用 –z defs 选项来确保所有必需的依赖项都提供为链接编辑的一部分。

使用直接绑定的目标文件可以与不使用直接绑定的目标文件共存于同一进程中。那些不使用直接绑定的目标文件将使用缺省的符号搜索模型。

可以使用下列链接编辑机制之一来建立符号引用到符号定义的直接绑定。

  • 使用 –B direct 选项。此选项可在要生成的目标文件与所有目标文件依赖项之间建立直接绑定。此选项还可在要生成的目标文件中的任何符号引用与符号定义之间建立直接绑定。

    使用 –B direct 选项还会启用延迟装载。该启用行为等效于在链接编辑命令行的前面添加 –z lazyload 选项。延迟装入动态依赖项中介绍了该属性。

  • 使用 –z direct 选项。此选项可在要生成的目标文件与命令行中该选项之后的任何依赖项之间建立直接绑定。可将此选项与 –z nodirect 选项配合使用,以切换依赖项之间直接绑定的使用。此选项不在要生成的目标文件中的任何符号引用与符号定义之间建立直接绑定。

  • 使用 DIRECT mapfile 关键字。此关键字用于直接绑定各个符号。SYMBOL_SCOPE / SYMBOL_VERSION 指令中描述了此关键字。


注 -  通过将环境变量 LD_NODIRECT 设置为非空值,可在运行时禁用直接绑定。通过设置该环境变量,进程内的所有符号绑定都将通过缺省搜索模型来执行。

以下几节介绍了每种直接绑定机制的使用方法。