编译和版本发布

一个库为什么会有三个so?

库xxx发布的时候,会三个so:

libxxx.so.1.0.0
libxxx.so -> libxxx.so.1.0.0
libxxx.so.1 -> libxxx.so.1.0.0

libxxx.so.1.0.0

真实的库,后缀分别是主版本号,次版本号,修订版本号

libxxx.so

库的软链接,编译时使用-lxxx,就会寻找libxxx.so,继而找到真实库;否则编译文件就要写成libxxx.so.1.0.0?可能会更麻烦。

libxxx.so.1

库的软链接,主版本号相同的库,ABI一致,可以兼容。
动态运行时引用的库,可以升级实际库(ABI不能变),而引用该库的可执行程序不受影响。

readelf -d a.so | grep NEEDED
# 输出: [libxxx.so.2]

 

posted @ 2026-01-23 09:41  moonのsun  阅读(23)  评论(0)    收藏  举报