可以定义共享目标文件以将其用作过滤器。此技术涉及将过滤器提供的接口与备用共享目标文件进行关联。在运行时,此备用共享目标文件可提供过滤器所提供的一个或多个接口。此备用共享目标文件称为 filtee。filtee 的生成方式与任意共享目标文件的生成方式相同。
过滤提供了一种从运行时环境中提取编译环境的机制。在链接编辑时,将绑定到过滤器接口的符号引用解析为过滤器符号定义。在运行时,可以将绑定到过滤器接口的符号引用重定向到备用共享目标文件。
通过使用 mapfile 关键字 FILTER 或 AUXILIARY,可以将在共享目标文件中定义的单个接口定义为过滤器。或者,共享目标文件可以使用链接编辑器的 –F 或 –f 选项将共享目标文件提供的所有接口定义为过滤器。通常单独使用这些技术,但也可在同一共享目标文件中组合使用这些技术。
存在两种过滤形式。
此过滤只需要一个用于要过滤的接口的符号表项。在运行时,必须通过 filtee 实现过滤器符号定义。
使用链接编辑器的 mapfile 关键字 FILTER 或链接编辑器的 –F 选项,可以定义接口以将其用作标准过滤器。此 mapfile 关键字或选项使用必须在运行时提供符号定义的一个或多个 filtee 的名称进行限定。
在运行时无法处理的 filtee 会被跳过。如果在 filtee 中找不到标准过滤器符号,则也将导致跳过此 filtee。在这两种情况下,无法使用过滤器提供的符号定义来实现此符号查找。
此过滤提供类似于标准过滤的机制,而且该过滤器还提供一种对应于辅助过滤器接口的回退实现。在运行时,可以通过 filtee 实现符号定义。
使用链接编辑器的 mapfile 关键字 AUXILIARY 或链接编辑器的 –f 选项,可以定义接口以将其用作辅助过滤器。此 mapfile 关键字或选项使用在运行时可提供符号定义的一个或多个 filtee 的名称进行限定。
在运行时无法处理的 filtee 会被跳过。如果在 filtee 中找不到辅助过滤器符号,则也将导致跳过 filtee。在这两种情况下,将使用过滤器提供的符号定义来实现此符号查找。