Jeg ser nogle gange disse to udtryk bruges om hverandre.

Hvad er den faktiske forskel mellem disse to udtryk? Hvordan bruges de forskelligt? Er der andre alternativer til disse to biblioteker?

Kommentarer

  • Jeg antager, at du har foretaget en online-søgning, før du bad her. Hvad fandt du hidtil? Hvordan besvarer disse oplysninger ikke dit spørgsmål? rediger spørgsmålet for at vise din indsats, så svarene ikke ' behøver ikke at gentage noget, du allerede ved . Se også: Hvordan stiller jeg et godt spørgsmål?

Svar

C-standardbiblioteket er en del af C-programmeringssproget, så det er en specifikation (skrevet på engelsk i en eller anden teknisk rapport). For eksempel forklarer n1570 dokumentet, hvad der er malloc, og hvordan det skal opføre sig.

Der er også en anden relevant specifikation, C POSIX-biblioteket (som mere eller mindre er et supersæt af C-standardbiblioteket). For eksempel er både dlopen og fork specificeret af POSIX (men ignoreret af C11-standarden).

GNU glibc bibliotek er en implementering af (et supersæt af) C-standardbiblioteket og af C POSIX-biblioteket. Det er noget gratis software (for det meste skrevet i C til GCC-dialekten med en smule samler). Det bruger systemopkald (angivet i syscalls (2) ) behandlet af kerne . Du kan bruge en anden implementering af C-standardbiblioteket, f.eks. musl-libc (eller dietlibc ).

Du kunne undgå enhver libc og foretage direkte systemopkald til kernen ved at skrive samlekoden. Dette gøres sjældent (et eksempel er Bones Scheme compiler eller BusyBox ). De fleste programmer foretager systemopkald gennem libc og drager fordel af de funktioner, der leveres af libc. Derfor er libc en hjørnesten fra Linux-systemer …

Forresten har GNU glibc nyttige funktioner uden for standarden, f.eks. som backtrace-funktioner , eller nogle yderligere måder at analysere programargumenter .

Bemærk, at der er subtile forskelle mellem, hvad standarden kræver, og hvad der sker i praksis (f.eks. hukommelsesoverdrivelse påvirker malloc på en ikke-standard måde, eller Linux dlopen har flere flag end hvad POSIX kræver).

Th man sider på Linux forklarer generelt, hvordan standardkonformitet er en funktion. Se for eksempel i dlopen (3) .

Se også libc (7) og vdso (7) .

Svar

Enhver implementering af C skal levere standardbiblioteket, men ikke alle C-kompilatorer er skrevet af FSF! Så GNU C-compileren bruger GNU C-biblioteket, og Intels C-compiler bruger et andet standardbibliotek (med et mindre fængende navn). Begge vil være instantieringer af standardbiblioteket, som C-standarden kræver.

Svar

Hvis du læser “UNIX” for “GNU”, var udtrykkene i lang tid udskiftelige, fordi de var de samme.

Indtil BSD kom ud af jorden, var AT & T “s UNIX-bibliotek THE C-biblioteket – fordi deres kompilator var THE C-kompilatoren (for det meste).

Efter BSD havde du System V UNIX, BSD UNIX, GNU (GNUs Not Unix), og temmelig snart var der C-compilere overalt, hver med deres egen implementering af standardbiblioteket.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *