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

在代码中,查找库文件此软连接的名字,在主版本未改动的情况下,动态库版本变动只需调整软连接即可。