Narzędzia użytkownika

Narzędzia witryny


materialy:podstawy-administracji:biblioteki-wspoldzielone

Biblioteki współdzielone

Programowanie oparte jest w dużej mierze na wykorzystywaniu napisanych wcześniej funkcji, procedur czy podprogramów. Aby kilka programów korzystało z tych samych „obiektów programistycznych” zamieszczane są one w miejscu dostępnym dla wszystkich programów - bibliotekach współdzielonych.

Zalety bibliotek współdzielonych:

  • ułatwiają pracę programistom:
    • zawierają często wykorzystywane obiekty programistyczne, które można wykorzystywać w wielu aplikacjach;
    • pozwalają na wykorzystanie już napisanego kodu;
    • wprowadzają standardy;
  • ulepszają działanie systemów operacyjnych:
    • zmniejszają rozmiar systemów operacyjnych i oprogramowania (kilka programów może korzystać z tych samych bibliotek - kod nie jest duplikowany między programami);
    • zmniejszają zajętość RAM przez programy (biblioteka jest ładowana do pamięci i z niej korzysta wiele programów jednocześnie).

Wady używania bibliotek współdzielonych:

  • aktualizacja biblioteki może nie być możliwa, bo kilka programów korzysta z tej samej biblioteki a jeden nie jest przystosowany do nowszej wersji – rozwiązaniem trzymanie starych wersji bibliotek dla różnego oprogramowania;
  • program musi wiedzieć, gdzie w systemie jest używana przez niego biblioteka (pliki konfiguracyjne programów, zmienne systemowe) – tu pojawia się praca dla administratora systemu.

Najpopularniejszą biblioteką w systemie Linux jest glibc (biblioteka dla języka C). Pliki bibliotek można znaleźć najczęściej w katalogach /lib oraz /usr/lib.

Dystrybucja Umiejscowienie pliku biblioteki glibc
CentOS 6.5 /lib/libc-2.12.so
Debian 7 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
Linux Mint 17 /lib/x86_64-linux-gnu/libc-2.19.so

Pliki bibliotek zazwyczaj przyjmują następującą konwencję nazewniczą: nazwa-so.wersja

Główny plik konfiguracyjny informujący gdzie można znaleźć biblioteki to /etc/ld.so.conf. Jego zawartość to zazwyczaj:

include /etc/ld.so.conf.d/*.conf

co oznacza, że wszystkie pliki o rozszerzeniu .conf z katalogu /etc/ld.so.conf.d/ stanowią również konfigurację (include oznacza, że do pliku konfiguracyjnego dołączone są inne pliki konfiguracyjne z innych lokalizacji wskazanych jako argument include).

W przypadku konieczności dołączenia nowej lokalizacji z bibliotekami współdzielonymi należy dopisać lokalizację do ld.so.conf a następnie uruchomić program ldconfig dla zaktualizowania informacji o dostępnych nowych bibliotekach.

Zmienna środowiskowa LD_LIBRARY_PATH służy głównie programistom do testów. Jest ona zazwyczaj pusta i można do niej przypisać tymczasową lokalizację katalogu bibliotek współdzielonych aby programy uruchamiały się na niestandardowych bibliotekach. Załóżmy, że programista chce uruchomić program wykorzystując nowsze wersje bibliotek. Instaluje je w osobnym folderze, np. /lib/tmp/newtest/ następnie program uruchamia w następujący sposób:

LD_LIBRARY_PATH=/lib/tmp/newtest/ /sciezka/do/program

Program będzie wtedy wykorzystywał przede wszystkim biblioteki ze wskazanego folderu.

Jeśli administrator chce mieć pewność, co do tego jakich bibliotek używa dany program - może użyć komendy ldd. Pokaże ona z jakich bibliotek współdzielonych bezpośrednio i pośrednio (czasami biblioteka jest uzależniona od innej biblioteki) program korzysta.

ldd /sciezka/do/program
ldd /bin/ls
materialy/podstawy-administracji/biblioteki-wspoldzielone.txt · ostatnio zmienione: 2015/01/10 09:39 przez mzalewski

(C) 2017 ITMZ Mariusz Zalewski