链接程序和库指南

现有(非版本化)共享库的版本控制

对现有的非版本化共享库进行版本控制需要格外小心。上一个软件发行版中提供的共享库已使其所有全局符号可供其他目标文件绑定。尽管可以确定共享库的目标接口,但其他目标文件可能已发现其他符号并绑定到这些符号。因此,删除任何符号都可能会导致应用程序无法传送新的版本化共享库。

如果可以确定并应用接口,而不中断任何现有应用程序,则可以对现有的非版本化共享库进行内部版本控制。运行时链接程序的调试功能对验证各种应用程序的绑定要求非常有用。 请参见调试库。但是,确定现有绑定要求会假定共享库的所有用户都是已知的。

如果无法确定现有的非版本化共享库的绑定要求,则应使用新的版本化名称创建一个新的共享库文件。 请参见协调版本化文件名。除了这个新的共享库外,还必须传送原始共享库,以满足任何现有应用程序的依赖性。

如果要冻结原始共享库的实现,则只需维护和传送共享库二进制文件。但是,如果原始共享库需要更新,则更适合使用从中生成共享库的备用源树。修补程序升级可能需要更新,只有升级共享库的实现才能与新平台保持兼容时也可能要更新。