编译和版本发布
一个库为什么会有三个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]
本文来自博客园,作者:moonのsun,转载请注明原文链接:https://www.cnblogs.com/moon-sun-blog/p/19370891

浙公网安备 33010602011771号