linux 共享库版本管理
原理
我的理解
- linux在系统内部将用到的共享库版本都保留下来,并没有覆盖。(不同soname)
- 调用程序和共享库在链接的时候已经记录下来了共享库的soname。
- libxx.so文件一般只是一个软链接。只是为了与gcc命令参数-lxx 中的xx名称一致。实际中可以在不同目录创建相同名字的libxx.so链接到不同soname的共享库。gcc -lxx使用-L参数指定不同目录位置,实现使用不同版本的共享库链接。在链接完成之后,libxx.so就失去了他的作用。因为加载共享库时直接查找soname。
- 实际中发现一个奇怪的现象:例如将soname为libxx.so.1的软链接拷贝到/usr/lib64 或/lib64文件夹下,其文件属性发生了变化:不再是软链接了,而是一个regular file。
- 基本就是这样。总算明白了linux里面libxx.so后面的那串或短或长的数字是干什么的了……
- 生成共享库时要注意添加参数指明其soname: -Wl,-soname=libxx.so.1 其中-Wl,后面的东东是链接时带上的参数K/V。
- 没了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。