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

退出打印视图

更新时间: 2014 年 7 月
 
 

阻止直接绑定到某个符号

可以使用显式插入来覆盖直接绑定。请参见定义显式插入。不过,可能会存在您无法控制显式插入的建立的情况。

例如,您可能交付了您希望使用直接绑定的一系列共享目标文件。用户知道要在该系列的共享目标文件提供的符号上进行插入。如果这些用户没有显式定义他们的插入要求,则重新交付使用直接绑定的共享目标文件可能会破坏它们的插入。

共享目标文件也可设计提供许多缺省接口,并期望用户提供自己的插入例程。

为防止破坏现有的应用程序,可以交付显式阻止直接绑定到一个或多个应用程序接口的共享目标文件。

可以使用下列选项之一阻止直接绑定到动态目标文件。

  • 使用 –B nodirect 选项。此选项阻止直接绑定到由要生成的目标文件提供的任何接口。

  • 使用 NODIRECT mapfile 关键字。使用此关键字可阻止直接绑定到各个符号。SYMBOL_SCOPE / SYMBOL_VERSION 指令中描述了此关键字。

  • singleton 符号定义产生的结果。

不能从外部目标文件直接绑定到标签为 nodirect 的接口。此外,也不能从同一目标文件内直接绑定到标签为 nodirect 的接口。

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