Néha úgy látom, hogy ezt a két kifejezést felváltva használják.

Mi a tényleges különbség e két kifejezés között? Hogyan használják őket másképp? Van-e más alternatíva ennek a két könyvtárnak?

Megjegyzések

  • Feltételezem, hogy online keresést hajtott végre, mielőtt ide kérdezne. Mit talált eddig? Hogy ezek az információk nem válaszolnak a kérdésére? Kérjük, szerkessze a kérdést, hogy megmutassa erőfeszítéseit, hogy a válaszok ne ' ne ismételjenek meg valamit, amit már tudsz . Lásd még: Hogyan tegyek fel jó kérdést?

Válasz

A C standard könyvtár a C programozási nyelv része, tehát specifikáció (írott angolul valamilyen technikai jelentésben). Például a n1570 dokumentum elmagyarázza, mi az a malloc, és hogyan kell viselkednie.

Van még egy releváns specifikáció, a C POSIX könyvtár (ami nagyjából a C szabványos könyvtár szuperhalmaza). Például a dlopen és az fork elemeket is a POSIX határozza meg (de a C11 szabvány nem veszi figyelembe).

A GNU A glibc könyvtár a C szabványos könyvtár és a C POSIX könyvtár (egy túlhalmaza) megvalósítása. Ez egy ingyenes szoftver (többnyire C-ben írva CC-dialektus hoz, egy kis összeállítóval). rendszerhívásokat használ (amelyek fel vannak sorolva az rendszerhívásokban (2) ), amelyeket a kernel . Használhatja a C szabványos könyvtár más megvalósítását, például a musl-libc (vagy a dietlibc ).

Elkerülheti az esetleges libc eseteket, és közvetlen rendszerhívásokat kezdeményezhet a kernel számára az assembler kód megírásával. Erre ritkán kerül sor (például a Bones séma fordítója vagy a BusyBox ). A legtöbb program rendszerhívásokat hajt végre a libc segítségével, és kihasználja az libc által biztosított funkciókat. Ezért a libc a Linux rendszerek sarokköve …

Egyébként a GNU glibc a szabványon kívül hasznos funkciókkal is rendelkezik, ilyenek mint backtrace függvények , vagy néhány további módszer a program argumentumainak elemzésére .

Figyelje meg, hogy finom különbségek vannak a szabvány által megköveteltek és a gyakorlatban bekövetkező események között (például a memória túlkötelezettség hatással van a malloc nem szabványos módon, vagy a Linux dlopen több zászlóval rendelkezik, mint amire a POSIX szükséges).

A Th man oldalak Linux rendszeren általában elmagyarázzák, hogy a szabványnak való megfelelés hogyan függvény. Keresse meg például a dlopen (3) cikket.

Lásd még: libc (7) és vdso (7) .

Válasz

A C minden megvalósításának meg kell adnia a standard könyvtárat, de nem minden C fordítót ír az FSF! Tehát a GNU C fordító a GNU C könyvtárat fogja használni, az Intel C fordítója pedig egy másik standard könyvtárat használ (kevésbé fülbemászó névvel). Mindkettő a standard könyvtár példánya, amelyet a C szabvány megkövetel.

Válasz

Ha a “UNIX” szót olvassa a “GNU” kifejezésre, akkor a kifejezések sokáig felcserélhetők voltak, mert ugyanazok voltak.

Amíg a BSD le nem szállt, az AT & T UNIX könyvtár THE C könyvtár volt – mert a fordítójuk A C fordító (javarészt).

A BSD után megvan a System V UNIX, a BSD UNIX, a GNU (a GNU nem Unix), és hamarosan C fordítók is voltak mindenhol, mindegyik saját szabványos könyvtár megvalósítással.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük