GNU/Linux >> Znalost Linux >  >> Linux

Jak udělat verzování sdílené knihovny v Linuxu?

Krátká verze je, že to uděláte přes soname knihovny. Přečtěte si kapitolu 3 na http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html a také kapitolu 3.3 Verze ABI na http://www.akkadia.org/drepper/dsohowto.pdf


Linux používá následující strategii – vy (správce systému) poskytujete symbolické odkazy ze „specifického“ souboru sdílené knihovny, jako je tento:

lrwxrwxrwx 1 root root    16 2011-09-22 14:36 libieee1284.so -> libieee1284.so.3
lrwxrwxrwx 1 root root    20 2011-09-22 14:36 libieee1284.so.3 -> libieee1284.so.3.2.2
-rw-r--r-- 1 root root 46576 2011-07-27 13:08 libieee1284.so.3.2.2

Tímto způsobem mohou vývojáři odkazovat buď proti -lieee1284 (jakákoli verze ABI), nebo libieee1284.so.3 nebo dokonce na konkrétní verzi vydání a opravy (3.2.2)


Nejlepší způsob, jak to zvládnout, je použít libtool, který za vás spraví verze.

Informace o verzi v podstatě nejsou (nebo ne primárně, nevím z mé hlavy) zakódovány v samotné knihovně, ale spíše v jejím názvu souboru. Čísla verzí jsou normálně uvedena ve formátu tří teček, přičemž hlavní číslo se zvyšuje s každým přerušením kompatibility sestupného ABI, střední číslo pro přerušení vzestupné kompatibility ABI a vedlejší číslo pro opravy, které nezměnily ABI.

Jak poznamenal qdot, symbolické odkazy v adresáři lib poskytují základní verzování. Existuje symbolický odkaz bez čísla verze (libfoo.so) pro aktuálně nainstalované vývojové hlavičky, symbolický odkaz s hlavním číslem pro každou nainstalovanou hlavní verzi (libfoo.so.1) a skutečný soubor s plným číslem verze. Normálně jsou programy propojeny tak, aby používaly libfoo.so.1 za běhu, takže může koexistovat více hlavních verzí.


Linux
  1. Jak zkontrolovat verzi knihovny libc na Debian Linuxu

  2. Jak zkontrolovat verzi jádra v Linuxu

  3. Jak zkontrolovat verzi MySQL v Linuxu

  1. Jak zkontrolovat verzi operačního systému Linux

  2. Dynamická sdílená knihovna C++ v systému Linux

  3. Jak inicializovat sdílenou knihovnu v Linuxu

  1. Jak nastavit googleTest jako sdílenou knihovnu v Linuxu

  2. Jak mohu propojit starší verzi sdílené knihovny

  3. Jak vytvořit zpoždění sdílené knihovny načtené v systému Linux