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

退出打印视图

更新时间: 2014 年 7 月
 
 

作为过滤器的共享目标文件

可以定义共享目标文件以将其用作过滤器。此技术涉及将过滤器提供的接口与备用共享目标文件进行关联。在运行时,此备用共享目标文件可提供过滤器所提供的一个或多个接口。此备用共享目标文件称为 filtee。filtee 的生成方式与任意共享目标文件的生成方式相同。

过滤提供了一种从运行时环境中提取编译环境的机制。在链接编辑时,将绑定到过滤器接口的符号引用解析为过滤器符号定义。在运行时,可以将绑定到过滤器接口的符号引用重定向到备用共享目标文件。

通过使用 mapfile 关键字 FILTERAUXILIARY,可以将在共享目标文件中定义的单个接口定义为过滤器。或者,共享目标文件可以使用链接编辑器的 –F–f 选项将共享目标文件提供的所有接口定义为过滤器。通常单独使用这些技术,但也可在同一共享目标文件中组合使用这些技术。

存在两种过滤形式。

标准过滤

此过滤只需要一个用于要过滤的接口的符号表项。在运行时,必须通过 filtee 实现过滤器符号定义。

使用链接编辑器的 mapfile 关键字 FILTER 或链接编辑器的 –F 选项,可以定义接口以将其用作标准过滤器。此 mapfile 关键字或选项使用必须在运行时提供符号定义的一个或多个 filtee 的名称进行限定。

在运行时无法处理的 filtee 会被跳过。如果在 filtee 中找不到标准过滤器符号,则也将导致跳过此 filtee。在这两种情况下,无法使用过滤器提供的符号定义来实现此符号查找。

辅助过滤

此过滤提供类似于标准过滤的机制,而且该过滤器还提供一种对应于辅助过滤器接口的回退实现。在运行时,可以通过 filtee 实现符号定义。

使用链接编辑器的 mapfile 关键字 AUXILIARY 或链接编辑器的 –f 选项,可以定义接口以将其用作辅助过滤器。此 mapfile 关键字或选项使用在运行时可提供符号定义的一个或多个 filtee 的名称进行限定。

在运行时无法处理的 filtee 会被跳过。如果在 filtee 中找不到辅助过滤器符号,则也将导致跳过 filtee。在这两种情况下,将使用过滤器提供的符号定义来实现此符号查找。