链接程序和库指南

符号查找

当运行时链接程序需要查找符号时,缺省情况下它会通过搜索每个目标文件进行查找。运行时链接程序首先搜索动态可执行文件,然后按照共享库的装入顺序搜索每个共享库。在多数情况下,会找出需要符号重定位的共享库以提供符号定义。

在这种情况下,如果不需要此重定位所用的符号成为共享库接口的一部分,则首选将此符号转换为静态自动变量。还可以应用符号缩减以从共享库接口中删除符号。 有关更多详细信息,请参见缩减符号范围。通过进行上述转换,链接编辑器在创建共享库过程中,会产生针对这些符号处理符号重定位的开销。

应在共享库中可见的全局数据项只是那些属于此共享库用户界面的数据项。以前,这是要实现的硬性目标,因为通常将全局数据定义为允许从两个或多个位于不同源文件中的函数进行引用。通过应用符号缩减,可以删除不必要的全局符号。请参见缩减符号范围。减少从共享库导出的全局符号数会降低重定位成本,并全面改善性能。

在具有许多符号重定位和依赖项的动态进程中,使用直接绑定也可以显著降低符号查找开销。请参见直接绑定