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

退出打印视图

更新时间: 2014 年 7 月
 
 

接口兼容性

可以对目标文件进行许多类型的更改。可以用最简单的术语将这些更改分类为以下两组之一。

  • 兼容更新。这些更新中会新增接口,所有先前可用的接口仍保持不变。

  • 不兼容更新。这些更新会更改现有接口,使此接口的现有用户操作失败或不正确地执行操作。

下表对一些常见的目标文件更改进行了分类。

表 9-1  接口兼容性示例
目标文件更改
更新类型
添加符号
兼容
删除符号
不兼容
向 non-variadic 函数添加参数
不兼容
从函数中删除参数
不兼容
更改函数数据项的大小或内容或将其作为外部定义
不兼容
目标文件的语义属性保持不变时,对函数进行的错误修复或内部增强
兼容
目标文件的语义属性发生更改时对函数进行的错误修复或内部增强
不兼容

注 - 添加符号(实质上是插入)可构成不兼容更新,使得新符号可能与应用程序对此符号的使用产生冲突。但是,由于通常使用源级名称空间管理,因此实际上这种形式的不兼容性非常少见。

可以通过维护所生成的目标文件的内部版本定义来适应兼容更新。可以通过生成具有新的外部版本化名称的新目标文件来适应不兼容更新。通过以上两种版本控制技术,可以选择应用程序的绑定,还可以在运行时验证正确版本绑定。以下各节将更详细地探讨这两种技术。