Řekněme, že mluvíme o libtest
. Když se rozhlédnete kolem sebe, uvidíte libtest.so
, což je odkaz na libtest.so.1
, který zase odkazuje na libtest.so.1.5
.
Spustitelný soubor pomocí libtest
bude odkazovat proti libtest.so
což je libtest.so.1
v tomto případě (toto je zapsáno do spustitelného souboru, viz ldd(1)
). Pokud se vaše distribuce změní libtest
pro opravu chyb může nová verze poskytnout libtest.so.1.6
(a po aktualizaci libtest.so.1
odkazy na něj, spuštěné programy budou stále používat libtest.so.1.5
dokud neodejdou). Dokud nebudou provedeny žádné změny ABI, vše funguje dobře. A skutečnost, že nedošlo k žádným změnám API, je signalizována nezměněným číslem verze 1.
Řekněme zaneprázdněný libtest
bobři přicházejí s novou, celou lesklou, od základu přepsanou knihovnou, se změněným ABI. Jak se ABI změnilo, změnili hlavní číslo verze na 2. Tu nainstalujete a nyní máte řetězec libtest.so --> libtest.so.2 --> libtest.so.2.1
. Všimněte si, že nyní máte nainstalované obě verze 1 a 2. Vaše dřívější programy stále fungují dobře, používají libtest.so.1
, ale pokud zkompilujete nový program, kompilátor (skutečně linker) vybere libtest.so
a nasměrujte tak spustitelný soubor na nový libtest.so.2.1
(pokud není výslovně požádáno o použití staré verze).
Všimněte si, že čísla verzí so nemusí mít žádný vztah k číslům verzí zdrojového kódu; hlavní číslo je verze ABI, vedlejší číslo je volitelné a lze jej použít ke sledování revizí. Takže zde (Fedora 20) používám systemd-libs-208-15.fc20.x86_64
, který poskytuje libsystemd-daemon.so.0.0.10
.
Toto jsou různé verze stejné knihovny.
Normálně chcete nejnovější stabilní verzi knihovny, takže se propojíte na x.so, která je propojena s touto nejnovější verzí. Když bude k dispozici nová verze, řekněme x.so.2, můžete ji využít v celém systému tím, že propojíte x.so s x.so.2
Někdy chcete vytvořit odkaz na starou verzi – například pokud váš program spoléhá na chybu, která byla opravena, nebo pokud nejnovější verze přinesla chybu. Někdy chcete vytvořit odkaz na novou experimentální verzi – například pokud ji testujete nebo opravuje chybu v aktuální verzi. V takovém případě byste odkazovali přímo na očíslovanou verzi – doufejme, že jde o dočasné opatření.