介绍-soname

real name libabc.so.1.0.0 (libname.so.major.minor.patch)

soname libabc.so.1 (libname.so.major) --连接时,应用程序中保存的依赖库的名字

link name libabc.so --我们Makefile中使用的是-labc这样的参数。连接时,连接器就会找到libabc.so这个文件,但这个文件实际是一个软连接,指向libabc.so.1.0.0,编译器会把libabc.so.1.0.0截断获得soname libabc.so.1,并最终把soname libabc.so.1保存到应用程序中。

应用程序运行时,首先根据soname libabc.so.1加载libabc.so.1,但这个文件其实也是一个软连接,指向libabc.so.1.0.0,最终加载的是libabc.so.1.0.0这个文件。

如果有不同的两个版本同时存在,libabc.so.1.0.0和libabc.so.2.0.0,那么只需要创建两个软连接libabc.so.1指向libabc.so.1.0.0和libabc.so.2指向libabc.so.2.0.0,这样旧程序仍然使用旧的库,新程序使用新的库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值