Manchmal werden diese beiden Begriffe synonym verwendet.
Was ist der tatsächliche Unterschied zwischen diesen beiden Begriffen? Wie werden sie unterschiedlich verwendet? Gibt es andere Alternativen zu diesen beiden Bibliotheken?
Kommentare
- Ich gehe davon aus, dass Sie eine Online-Suche durchgeführt haben, bevor Sie hier gefragt haben. Was hast du bisher gefunden? Wie beantworten diese Informationen Ihre Frage nicht? Bitte bearbeiten Sie die Frage , um Ihre Bemühungen zu zeigen, damit die Antworten ' nicht etwas wiederholen müssen, das Sie bereits kennen . Siehe auch: Wie stelle ich eine gute Frage?
Antwort
Die C-Standardbibliothek ist Teil der Programmiersprache C, daher handelt es sich um eine -Spezifikation (geschrieben) auf Englisch in einem technischen Bericht). Im Dokument n1570 wird beispielsweise erläutert, was malloc
ist und wie es sich verhalten soll.
Es gibt auch eine andere relevante Spezifikation, die C POSIX-Bibliothek (die mehr oder weniger eine Obermenge der C-Standardbibliothek ist). Beispielsweise werden sowohl dlopen
als auch fork
von POSIX angegeben (vom C11-Standard jedoch ignoriert).
Die GNU glibc -Bibliothek ist eine Implementierung (einer Obermenge von) der C-Standardbibliothek und der C POSIX-Bibliothek. Es handelt sich um eine freie Software (meistens in C für den GCC-Dialekt mit etwas Assembler geschrieben). Es verwendet Systemaufrufe (aufgeführt in syscalls (2) ), die von der Kernel . Sie können auch eine andere Implementierung der C-Standardbibliothek verwenden, z. B. musl-libc (oder dietlibc ).
Sie können libc
vermeiden und direkte Systemaufrufe an den Kernel ausführen, indem Sie Assembler-Code schreiben. Dies wird selten durchgeführt (ein Beispiel ist der Bones Scheme-Compiler oder BusyBox ). Die meisten Programme führen Systemaufrufe über die libc
durch und nutzen die Funktionen der libc
. Daher ist libc
ein Eckpfeiler von Linux-Systemen …
Übrigens hat der GNU glibc nützliche Funktionen außerhalb des Standards, wie z als Backtrace-Funktionen oder einige zusätzliche Möglichkeiten zum Programmargumente analysieren .
Beachten Sie, dass es subtile Unterschiede zwischen den Anforderungen des Standards und den praktischen Vorgängen gibt (z. B. Speicherüberbelegung wirkt sich auf malloc
auf nicht standardmäßige Weise oder Linux dlopen
hat mehr Flags als POSIX erfordert.
Die man
-Seiten unter Linux erläutern im Allgemeinen, wie Standardkonformität eine Funktion ist. Suchen Sie beispielsweise in dlopen (3) .
Antwort
Jede Implementierung von C muss die Standardbibliothek bereitstellen, aber nicht jeder C-Compiler wird von der FSF geschrieben! Der GNU C-Compiler verwendet also die GNU C-Bibliothek, und der C-Compiler von Intel verwendet eine andere Standardbibliothek (mit einem weniger eingängigen Namen). Beide sind Instanziierungen der Standardbibliothek, die der C-Standard benötigt.
Antwort
Wenn Sie „UNIX“ für „GNU“ lesen, waren die Begriffe lange Zeit austauschbar, weil sie dasselbe waren.
Bis BSD auf den Markt kam, war die UNIX-Bibliothek von AT & T THE C – weil ihr Compiler war DER C-Compiler (größtenteils).
Nach BSD hatten Sie System V UNIX, BSD UNIX, GNU (GNUs Not Unix) und ziemlich bald gab es C-Compiler überall, jede mit ihrer eigenen Implementierung der Standardbibliothek.