GNU/Linux >> Znalost Linux >  >> Linux

Proč potřebujeme soubor .so.1 v Linuxu?

Ř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í.


Linux
  1. Potřebujete dobrý hex editor pro Linux

  2. Proč se v Linuxu používá select

  3. Proč potřebujeme bootloader ve vestavěném zařízení?

  1. Proč mě moje potřeba kontroly přiměla přejít na Linux

  2. Proč na Linuxu používám exa místo ls

  3. Linux – všechno je soubor?

  1. Jak přesunout soubor v Linuxu

  2. Vysvětlení oprávnění souborů v systému Linux

  3. Linux Tail Command