libc(7) Miscellaneous Information Manual libc(7)

libc - przegląd standardowych bibliotek C na Linuksie

Pojęcie „libc” służy często jako skrót nazwy „standardowa biblioteka C” — biblioteki standardowych funkcji, które mogą być używane przez wszystkie programy C (i czasem przez programy w innych językach). Ze względów historycznych (zob. niżej) użycie pojęcia „libc” w odniesieniu do standardowej biblioteki C jest poniekąd niejednoznaczne w Linuksie.

Zdecydowanie najpowszechniej używaną biblioteką C na Linuksie jest Biblioteka C GNU, często określana jako glibc. Jest to biblioteka C, która jest obecnie używana przez wszystkie główne dystrybucje Linuksa. Jest to również biblioteka C, której szczegóły są udokumentowane w odpowiednich stronach podręcznika systemowego projektu man-pages (głównie w sekcji 3). Dokumentacja glibc jest dostępna również w podręczniku glibc, dostępnym poleceniem info libc. Wydanie 1.0 glibc miało miejsce we wrześniu 1992 roku (wcześniej istniały wydania 0.x). Kolejnym głównym wydaniem glibc było 2.0 z początku 1997 roku.

Ścieżka /lib/libc.so.6 (lub podobna) jest zwykle dowiązaniem symbolicznym, wskazującym na położenie biblioteki glibc, a wykonanie tej ścieżki spowoduje wyświetlenie przez glibc różnych informacji o wersji zainstalowanej w bieżącym systemie.

W pierwszej dekadzie lat 90. istniała przez chwilę linuksowa libc, rozgałęzienie glibc 1.x utworzone przez deweloperów Linuksa, którzy stwierdzili, że rozwój glibc w tamtym czasie nie odpowiada potrzebom Linuksa. Często określano tę bibliotekę (niejednoznacznie) jako po prostu „libc”. Linuksowa libc miała główne wydania 2, 3, 4 i 5, oraz wiele pomniejszych wersji tych wydań. Linuksowa libc4 była ostatnią wersją używającą binarnego formatu a.out i pierwszą, która zapewniała (prymitywną) obsługę bibliotek dzielonych. Linuksowa libc5 była pierwszą wersją obsługującą format binarny ELF, wersja ta używała soname biblioteki dzielonej libc.so.5. Przez pewien czas, linuksowa libc była standardową biblioteką C w wielu dystrybucjach Linuksa.

Jednak, niezgodnie z pierwotnymi motywami utworzenia linuksowej biblioteki libc, w chwili wydania glibc 2.0 (w 1997 r.), była ona zdecydowania lepsza od linuksowej libc i wszystkie główne dystrybucje Linuksa używające linuksowej libc, powróciły do glibc. Aby uniknąć pomyłek dotyczących wersji linuksowej libc, glibc 2.0 i kolejne używają soname biblioteki dzielonej libc.so.6.

Zmiana z linuksowej libc na glibc 2.0 nastąpiła dawno temu, dlatego strony podręcznika systemowego projektu man-pages nie dokumentują już detali linuksowej biblioteki libc. Pomimo tego, historia odcisnęła swoje piętno na kilku stronach podręcznika systemowego z informacjami o linuksowej libc, w szczególności w odwołaniach do libc4 i libc5.

Istnieją inne, rzadziej używane biblioteki C do Linuksa. Biblioteki te są zwykle mniejsze niż glibc, zarówno jeśli chodzi o zestaw funkcji jak i zajętość pamięci i często są przeznaczonego do budowania małych plików wykonywalnych, używanych np. do wbudowanych systemów linuksowych. Są to między innymi uClibc, dietlibc, i musl libc. Szczegóły dotyczące tych bibliotek są opisywane przez projekt man-pages tam, gdzie są znane.

syscalls(2), getauxval(3), proc(5), feature_test_macros(7), man-pages(7), standards(7), vdso(7)

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages 6.9.1