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

退出打印视图

更新时间: 2014 年 7 月
 
 

符号可见性

可以将符号归类为局部符号全局符号。除了包含符号定义的目标文件以外,无法从其他目标文件中引用局部符号。缺省情况下,会将局部符号从任何输入可重定位目标文件复制到要生成的输出目标文件中。可以从输出目标文件中删除局部符号。请参见删除符号

除了包含符号定义的目标文件外,还可以从其他目标文件引用全局符号。收集并解析后,全局符号将添加到要在输出目标文件中创建的符号表中。尽管所有的全局符号是一起处理和解析的,但可以调整其最终可见性。全局符号可以定义其他可见性属性。请参见Table 12–23。此外,在链接编辑期间可以使用 mapfile 符号指令指定符号可见性。请参见Table 8–8。这些可见性属性和指令可能会导致全局符号在写入输出目标文件中时调整其可见性。

创建可重定位目标文件时,会在输出目标文件中记录所有可见性属性和指令。但是,不会应用这些属性隐含的可见性更改。相反,任何可见性处理将延迟到读取这些目标文件作为输入的动态目标文件的后续链接编辑。在特殊情况下,可以使用 –B reduce 选项强制立即解释可见性属性或指令。

创建动态可执行文件或共享目标文件时,符号可见性属性和指令在将符号写入到任何符号表前应用。可见性属性可确保符号保持为全局符号,且不受任何符号缩减技术影响。可见性属性和指令还可导致全局符号降级为局部符号。后一种技术最常用于显式定义目标文件导出接口。请参见缩减符号作用域