1、动态库的命名规则:libname.so.x.y.z
名字 | 含义 |
---|---|
lib | 这是共享库的前缀 |
name | 共享库名字 |
x | 主版本号 |
y | 次版本号 |
z | 发布版本号 |
2、每个版本号的含义
版本号 | 含义 |
---|---|
主版本号 | 表示库的重大升级,不同主版本号的库之间是不兼容的。依赖旧的主版本号的程序需要改动相应的部分,并且重新编译,才能在新版本的共享库中运行。一般来说,就是新版本库在旧版本库的基础上,改动了函数接口或者数据类型,导致不兼容。 |
次版本号 | 表示库的增量升级,即增加一些新的接口符号,且保持原来的符号不变。在主版本号相同的情况下,高的次版本号的库兼容低的次版本号的库。依赖低的次版本号库编译的程序,可以在新的次版本号的库中运行,因为新次版本号库中保留了低次版本号库中所有的接口,并且没有改变定义和含义。 |
发布版本号 | 表示库的一些错误修正、性能的提升等,并不添加任何新的接口,也不对接口进行更改。相同主版本号、次版本号的共享库,不同的发布版本之间完全兼容。 |
3、总结
(1)主版本号不同的库之间不兼容;
(2)主版本号相同,高次版本号的库兼容低次版本号的库;
(3)主、次版本号相同的库,不同发布版本之间完全兼容;