歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux -soname深入理解

Linux -soname深入理解

日期:2017/2/28 14:55:08   编辑:Linux教程

-Wl 表示後面的參數也就是-soname,libhello.so.1直接傳給連接器ld進行處理。實際上,每一個庫都有一個soname,當連接器發現它正 在查找的程序庫中有這樣一個名稱,連接器便會將soname嵌入連結中的二進制文件內,而不是它正在運行的實際文件名,在程序執行期間,程序會查找擁有 soname名字的文件,而不是庫的文件名,換句話說,soname是庫的區分標志。

這樣做的目的主要是允許系統中多個版本的庫文件共存,習慣上在命名庫文件的時候通常與soname相同

libxxxx.so.major.minor

其中,xxxx是庫的名字,major是主版本號,minor 是次版本號

簡單的來說,soname指定了庫的名字,而不去管生成的是什麼名字的庫,在做連接是將這個soname指定的名字加入執行文件中,而程序運行是也是去加載soname指定的庫文件名。所以如果程序連接了新升級的庫,只需要將這個新庫拷貝到目錄下面後,對其以soname做一個符號鏈接就能調用。

如果庫升級了,但是程序依舊使用舊的鏈接庫,那麼只需對這個將舊庫名字軟鏈接到新升級的庫中去即可。

Copyright © Linux教程網 All Rights Reserved