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. 沒了。
相關文章
相關標籤/搜索