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

退出打印视图

更新时间: 2014 年 7 月
 
 

同一进程中的多个外部版本化文件

创建新的外部版本化共享目标文件属于一项重大更改。请确保您了解任何使用其中一个外部版本化共享目标文件的进程的完整依赖项。

例如,某个应用程序可能具有一个对 libfoo.so.1 的依赖项和一个外部提供的目标文件 libISV.so.1。后者也可能具有对 libfoo.so.1 的依赖项。应用程序可以重新设计,以使用 libfoo.so.2 中的新接口。但是,应用程序可能无法更改对外部目标文件 libISV.so.1 的使用。根据运行时装入的 libfoo.so 实现的可见性作用域,文件的两个主要版本均可引入正在运行的进程。更改 libfoo.so 的版本的唯一原因是要标记一项不兼容的更改。因此,在一个进程内使用目标文件的两个版本会导致不正确的符号绑定,并因此而产生意外的交互。

应当避免不兼容的接口更改。仅当您可以完全控制接口定义和引用此定义的所有目标文件时,才可以考虑进行不兼容的更改。