共享库也就是动态库,在linux中是随处可见的,这是由于动态链接有这众多优点,因此大量的程序开始使用动态链接的机制,所以你才会在linux这样的操作系统中看到大量的动态链接库的存在。但是随着linux系统架构的成熟,应用和系统软件生态系统的繁荣,导致linux中的动态库数量越来越多,并且同一个共享库还会有不同的版本,这个时候如果没有一个良好的动态库管理机制,那么势必会给长期的维护,升级造成极大的困难。
本文我们先看一下linux系统是怎么维护不同版本的库的。
Linux中共享库的命名规则
想要管理好系统中的众多共享库这就需要有一个良好的命名规则,不能出现各个共享库随意命名的情况。一般而言,在linux中的共享库的命名规则如下:
libname.so.x.y.z
最前面的前缀lib是所有共享库都会使用的前缀,表示这是一个库文件;之后的name就是这个共享库的名字;然后的so表示shared object,是一个共享目标文件,这样是共享库的实质;然后的x.y.z表示版本,其中x表示主版本号,y是次版本号,z是发布版本号,这三者意义是不同的。
主版本表示共享库的重大升级,很多时候不同主版本号之间的库是互相不兼容的,因为某些接口可能已经被修改,而旧的接口没有