假设我有一个名为libfoo的库
>它的版本是0.4.2
>其中0.4是API版本和
> 2是可以添加新API函数的版本号.
soname应该是libfoo.so.0.4,libfoo.so.0.4.2还是别的什么?
解决方法:
如果api版本是0.4,并且它与其他0. *版本不兼容,那么你应该将soname设置为libfoo.so.0.4.实际上soname可以是任何字符串,只需要在加载可执行文件时在系统中找到合适的共享库.
许多软件包(或发行版)都遵循与您不同的命名方案.例如,带有api 0.4的libfoo版本0.4.2将成为带有soname libfoo.4的libfoo.so.4.2.
当对界面进行实质性更改时,不仅需要重新编译和进行小修改,而是使用库重写代码中的大量代码 – 通过重命名库来突破“主要”主要版本.
然后当将版本从0.4.2升级到1.0.1时,libfoo.4.2变成了libfoo-1.so.0.1.
如果某些旧软件尚未重写为全新的api,这样的方案可以更容易地安装多个版本的库.