wake-up-neo.com

Was ist GLIBC? Was wird es verwendet?

Ich habe nach dem Quellcode der C-Standardbibliotheken gesucht. Was ich damit meine, ist zum Beispiel, wie cos, abs, printf, scanf, fopen und alle anderen Standard-C-Funktionen geschrieben werden.

Als ich danach suchte, bin ich auf GLIBC gestoßen, aber ich weiß nicht, was es eigentlich ist. Es ist GNU C Library und enthält einige Quellcodes, aber was sind sie eigentlich, sind sie der Quellcode der Standardfunktionen oder sind sie etwas anderes? Und wofür wird es verwendet?

27
user1261015

Es handelt sich dabei um die Implementierung der Standard C-Bibliothek , die in C-Standards beschrieben ist, sowie einige zusätzliche nützliche Elemente, die nicht unbedingt Standard sind, sondern häufig verwendet werden.

Ihre Hauptinhalte sind:

1) C-Bibliothek, beschrieben in den Standards ANSI, c99, c11. Es enthält Makros, Symbole, Funktionsimplementierungen usw. (printf (), malloc () usw.)

2) POSIX-Standardbibliothek. Die "Userland" -Lösung von Systemaufrufen. (open (), read () usw.) Eigentlich "implementiert" glibc keine Systemaufrufe. Kernel tut dies. Glibc stellt jedoch die Landschnittstelle für die vom Kernel bereitgestellten Dienste bereit, sodass die Benutzeranwendung einen Systemaufruf wie einen gewöhnlichen verwenden kann Funktion.

3) Auch einige nicht standardmäßige, aber nützliche Sachen.

"Verwenden Sie die Kraft, lesen Sie die Quelle"

$git clone git://sourceware.org/git/glibc.git

(Ich war kürzlich ziemlich erleuchtet, als ich in malloc.c in glibc nachgesehen habe.)

42
Aftnix

Es gibt mehrere Implementierungen des Standards. Glibc ist die Implementierung, die die meisten Linuxes verwenden, aber es gibt noch andere. Glibc enthält auch (wie Aftnix sagt) die Klebefunktionen, die die Szene für Sprünge in den Kernel (auch als Systemaufrufe bezeichnet) einrichten. Viele Funktionen von glibc erledigen nicht die eigentliche Arbeit, sondern delegieren nur an den Kernel.

Um die Quelle von Glibc zu lesen, gehen Sie einfach auf google. Es gibt unzählige Websites, die es tragen, und auch verschiedene Variationen.

Windows verwendet die eigene Implementierung von Microsoft, die meiner Meinung nach MSVCR.DLL heißt. Ich bezweifle, dass Sie den Quellcode dieser Bibliothek überall finden werden. Beachten Sie auch, dass einige Funktionen, die ein Linux-Hacker als "Standard" bezeichnen könnte, unter Windows nicht existieren (insbesondere Fork). Das Gegenteil trifft auch zu.

Andere Systeme haben eine eigene libc.

9
jforberg

Das glibc-Paket enthält Standardbibliotheken, die von mehreren Programmen auf dem System verwendet werden. Um Speicherplatz und Speicherplatz zu sparen und das Upgrade zu vereinfachen, wird allgemeiner Systemcode an einem Ort gespeichert und von Programmen gemeinsam genutzt. Dieses spezielle Paket enthält die wichtigsten Gruppen gemeinsam genutzter Bibliotheken: die Standard-C-Bibliothek und die Standard-Mathematikbibliothek. Ohne diese beiden Bibliotheken funktioniert ein Linux-System nicht. Das glibc-Paket enthält auch Unterstützung für Landessprachen. 

7
Sandy

Ja, es handelt sich um die Implementierung von Standard-Bibliotheksfunktionen.

Genauer gesagt ist es die Implementierung für alle GNU - Systeme und für fast alle * NIX-Systeme, die den Linux-Kernel verwenden.

2
user529758

Hier einige "praktische" Sichtweisen: