共享库的兼容性

1、共享库的更新

(1)由于Bug的修正、新功能的增加、性能的提升,共享库需要不断的更新版本;
(2)共享库的更新可以被分为两类:兼容性更新和不兼容更新;
(3)不兼容更新:共享库改变了原有的接口,使用该共享库原有接口的程序可能不能运行或者运行不正常,需要依赖新版本的库重新编译;
(4)兼容更新:更新的内容是在原来的基础上新增,或者改变的是接口内部实现;

2、共享库更新常见的更改方式

更改点 是否兼容
新增导出符号,比如新增函数接口或者变量类型 兼容
删除共享库里原有的导出符号 不兼容
修改导出函数的传参类型或者个数 不兼容
改变导出的结构体类型,内部成员变量的长度、类型、个数 不兼容
修复导出函数的bug或者提升性能,但是没有改变导出函数的语义、功能、行为和接口类型 兼容
修复导出函数的bug或者提升性能,但是改变导出函数的语义、功能、行为和接口类型 不兼容

3、导致共享库不兼容的改动

(1)导出函数的行为发生改变,也就是说调用这个函数以后产生的结果与以前不一样,不再满足旧版本规定的函数行为准则;
(2)删除导出函数;
(3)导出的数据结构发生变化,比如:在导出的机构体类型中新增成员变量,导致结构体大小发生改变;
(4)导出函数的接口发生变化,比如:函数返回值、传参类型、传参个数;

你可能感兴趣的:(#,《程序员的自我修养》,共享库,C语言)