linux 共享库版本管理

原理

请看Linux 如何解决共享库的版本控制html

个人理解

  1. linux在系统内部将用到的共享库版本都保留下来,并无覆盖。(不一样soname)
  2. 调用程序和共享库在连接的时候已经记录下来了共享库的soname。
  3. libxx.so文件通常只是一个软连接。只是为了与gcc命令参数-lxx 中的xx名称一致。实际中能够在不一样目录建立相同名字的libxx.so连接到不一样soname的共享库。gcc -lxx使用-L参数指定不一样目录位置,实现使用不一样版本的共享库连接。在连接完成以后,libxx.so就失去了他的做用。由于加载共享库时直接查找soname。
  4. 实际中发现一个奇怪的现象:例如将soname为libxx.so.1的软连接拷贝到/usr/lib64 或/lib64文件夹下,其文件属性发生了变化:再也不是软连接了,而是一个regular file。
  5. 基本就是这样。总算明白了linux里面libxx.so后面的那串或短或长的数字是干什么的了……
  6. 生成共享库时要注意添加参数指明其soname: -Wl,-soname=libxx.so.1 其中-Wl,后面的东东是连接时带上的参数K/V。
  7. 没了。
相关文章
相关标签/搜索