Shared library

Een shared library (gedeelde bibliotheek) is een verzameling functies die door meerdere programma's tegelijk gebruikt kan worden. In plaats van dat elk programma dezelfde code ingebakken heeft, laden ze de gedeelde bibliotheek in het geheugen.

Voordelen

  • Minder schijfruimte — code staat maar één keer op schijf
  • Minder geheugen — de kernel laadt de library één keer en deelt het geheugen
  • Eenvoudig updaten — bugfix in de library? Alle programma's die hem gebruiken profiteren meteen

Naamgeving

Shared libraries hebben de extensie .so (Shared Object):

libc.so.6        → C-standaardbibliotheek
libssl.so.3      → OpenSSL
libpthread.so.0  → POSIX-threads

Het cijfer achter .so is de soname — de majeure versie. Meerdere versies kunnen naast elkaar bestaan.

Opzoeken

ldd /usr/bin/curl          # welke libraries gebruikt curl?
ldconfig -p | grep libssl  # is libssl beschikbaar?

Ontbrekende library

Foutmelding error while loading shared libraries: libfoo.so.1: cannot open shared object file betekent dat de library niet gevonden wordt. Oplossingen: library installeren of LD_LIBRARY_PATH aanpassen.

Zie ook

linuxontwikkeling