给共享库so指定soname,soname的用途

在生成共享库的时候,我们可以指定它的soname.通过 -Wl,-soname=libxxx.so.x 设置该共享库的soname.如果我们没有设置它的soname,则默认为该共享库的文件名.

在成功编译一个程序后,相应库的soname已经写在该程序里,在程序运行前会根据这些soname去搜索文件名和soname相等的库,进行连接并运行.

  • 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、付费专栏及课程。

余额充值