2012-12-06 71 views
0

我正在學習管理我的共享庫,google顯示了大量關於兩個主要和次要版本數字的信息,但我正在查看的許多庫都有3個數字,例如libsqlite3.so.0.8.6,第三位數字是什麼?這個名字中的3位數字是什麼?

有一個「期間」提到:

...的SONAME的前綴lib'', the name of the library, the phrase。所以「」,隨後一段和遞增每當界面的變化版本號.. 。 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

但我無法找到這個期間的數字是什麼和它的影響的解釋?

編輯:

libsqlite3.so.0.8.6 
       | | | 
_What's this?_| | | 
_Major__________| | 
_Minor____________| 
+2

期間是這個字符:''' - 沒有像「期間數字」那樣的東西。 – Amadan

回答

2

Here is a thread從關於命名一番交談另一個論壇(快速谷歌搜索):

從螺紋:

當有兩個數字有一個大和一個小版本。 libncursesw.so.5.6包含主版本5和次版本6;理論上 相同主要版本的任何次要版本都可以在沒有 重新編譯的情況下兼容,因此,如果升級到5.7版以修正缺陷,那麼與libncursesw.so.5鏈接的程序不會錯過 。如果你有一個古老的 程序要求版本4,你可以安全地安裝一個4.x庫 與5.x一起,除了那個程序會使用它。

基本上,命名約定允許對與庫鏈接的程序有三個級別的兼容性。程序可以選擇鏈接庫名稱本身,特定的主要編號或特定的major.minor編號。這確實取決於應用程序開發人員確定最有意義的內容。

你會注意到,通用和主數字形式通常鏈接到最新的major.minor形式。根據庫的需要,庫可能包含其他版本號(例如/lib/ld-linux.so)。版本號仍然從左到右,特異性增加。

+0

好的,但我的主要問題是關於第三位數字,就像我在問題中編輯的那樣。第三位數字(領先的?)是否構成名稱的一部分,即使它位於'.so'之後? –

+0

編輯答案...對於sqlite,我不相信'0'是必要的,雖然它是默認生成的。因爲soname實際上是指示主版本'3'的sqlite3。我沒有專門研究'sqlite',無論如何我已經看到這種行爲形成其他庫。 – jheddings