linux+api名称,linux – 库版本,API版本和soname:如何命名?

文章讨论了如何正确设置库的soname,特别是在API版本变化时。0.4是API版本,2是次要版本号。soname应该反映API的不兼容变化,如libfoo.so.0.4。不同软件包可能采用不同的命名策略,如libfoo.4或libfoo-1。这种策略允许在系统中安装多版本库,方便旧软件与新API之间的兼容性。
摘要由CSDN通过智能技术生成

假设我有一个名为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,这样的方案可以更容易地安装多个版本的库.

标签:linux,version,libraries

来源: https://codeday.me/bug/20190813/1647162.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在中,当共享(shared library)的接口发生重大变化时,可能会进行"soname bump"操作。"soname"是指共享的名字,它用于标识版本和接口。 Soname bump是指对共享进行更改,需要修改soname,以指示接口的变化。这样做的目的是为了确保旧的二进制程序仍然可以与旧版本保持兼容,而新的二进制程序则可以链接到新版本Soname bump通常涉及以下步骤: 1. 修改共享的接口:在进行soname bump之前,可能会对共享的接口进行更改,例如添加、删除或修改函数的签名、结构体的布局等。这些更改会导致旧版本的二进制程序无法与新版本兼容。 2. 修改共享soname:将共享soname更改为反映接口变化的新版本号。soname通常遵循一定的命名约定,例如使用lib<name>.so.<version>的形式,其中<name>是名称,<version>是版本号。 3. 重新编译和链接依赖于共享的二进制程序:在soname bump之后,依赖于共享的二进制程序需要重新编译和链接,以便它们可以使用新的接口。 4. 兼容性处理:为了确保向后兼容性,可以采取一些措施,如提供符号版本控制(Symbol Versioning)或使用动态符号表(Dynamic Symbol Table)。这些机制可以在运行时动态地加载适当版本的共享。 进行soname bump操作时,需要谨慎处理,并与相关的二进制程序开发者和用户进行充分的沟通和测试,以确保过渡过程中的兼容性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值