8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
我们都知道在Linux系统下,动态库的命名遵循了特定的规则lib{name}.so
如上所示,其中{name}可以替换为你自己声明的动态库名称。
可能大部分的人都了解就到这里,并没有关注动态库文件后面的版本控制。如果你已经关注了,那么后面的就可以不用看啦。
Linux下动态库的命名规范
Linux下引入了一套命名机制,但是这个机制仅是一个约定,并不强迫大家都按照这种方法。
Real Name
共享库本身的文件名,共享库的命名必须是libname.so.x.y.z,这里xyz代表的是此库文件的版本号。前缀: lib
后缀: so
name:自定义的库文件名
x: Major Version Number,主版本号,不兼容。重大升级,不同主版本之间的库是不兼容的。
y: Minor Version Number, 次版本号,向下兼容。增量升级,增加一些新的接口但保留原有接口。高次版本的库向后兼容低次版本的库。
z: Release Version Number,发布版本号,互相兼容。诸如库的一些错误修改、性能改进等,不会添加新接口,也不会更改接口。主版本和次版本完全相同的情况下,不同发行版本之间完全兼容。
SO-NAME
在Linux系统中,每个共享库都有一个对应的SO-NAME(共享库文件名去掉次版本号和发布版本号)。
小结
综合上述两点,当我们遵循了Linux的这种机制并生成了自己的动态库文件后。咱们可以对库文件设置软连接,就可以避免真实库文件版本数字一直在变动,而不得不调整调用的代码。
例如:有一个 libHelloWorld.so.x.y.zln -s libHelloWorld.so.x.y.z libHelloWorld.so.x
在代码中,查找库文件此软连接的名字,在主版本未改动的情况下,动态库版本变动只需调整软连接即可。