Was ist GLIBC? Was wird es verwendet?

Lesezeit: 3 Minuten

Ich habe nach dem Quellcode der C-Standardbibliotheken gesucht. Was ich damit meine, ist zum Beispiel, wie cos, abs, printf, scanf, fopen und all die anderen Standard-C-Funktionen geschrieben sind, ich meine, ihren Quellcode zu sehen.

Als ich danach gesucht habe, bin ich auf GLIBC gestoßen, aber ich weiß nicht, was es eigentlich ist. Es ist die GNU-C-Bibliothek 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?

  • GNU C-Bibliothek – Es ist, wie das Wiki feststellt, die GNU-Implementierung der C-Standardbibliothek (mit zusätzlichen Dingen, die für die GNU-Implementierung spezifisch sind).

    – Wo

    12. Juli 2012 um 21:16 Uhr

Benutzeravatar von Aftnix
Nachnix

Es ist die Umsetzung von Standard-C-Bibliothek beschrieben in C-Standards plus einige zusätzliche nützliche Dinge, die nicht unbedingt Standard sind, aber häufig verwendet werden.

Seine Hauptinhalte sind:

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

2) POSIX-Standardbibliothek. Der „Userland“-Klebstoff von Systemaufrufen. (open(), read() usw.) Tatsächlich “implementiert” glibc keine Systemaufrufe, der Kernel tut es. Aber glibc stellt die Benutzerlandschnittstelle zu den vom Kernel bereitgestellten Diensten bereit, sodass die Benutzeranwendung einen Systemaufruf wie einen gewöhnlichen verwenden kann Funktion.

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

“nutze die gewalt, lies die quelle”

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

(Ich war kürzlich ziemlich aufgeklärt, als ich malloc.c in glibc durchgesehen habe)

  • Gibt es noch etwas, das “glibc die Benutzeroberfläche für die vom Kernel bereitgestellten Dienste bereitstellt”? C ist die einzige Sprache, die eine solche API bereitstellt?

    – Marat Mkhitaryan

    9. Januar 2020 um 8:58 Uhr

Benutzeravatar von jforberg
jforberg

Es gibt mehrere Implementierungen des Standards. Glibc ist die Implementierung, die die meisten Linuxe verwenden, aber es gibt noch andere. Glibc enthält auch (wie Aftnix angibt) die Glue-Funktionen, die die Szene für Sprünge in den Kernel (auch bekannt als Systemaufrufe) einrichten. So viele der ‘Funktionen’ von glibc erledigen nicht die eigentliche Arbeit, sondern delegieren nur an den Kernel.

Um die Quelle von Glibc zu lesen, googeln Sie einfach danach. Es gibt unzählige Websites, die es führen, und auch mehrere Variationen.

Windows verwendet Microsofts eigene Implementierung, die meiner Meinung nach MSVCR.DLL heißt. Ich bezweifle, dass Sie den Quellcode dieser Bibliothek irgendwo finden werden. Beachten Sie auch, dass einige Funktionen, die ein Linux-Hacker als “Standard” betrachten könnte, unter Windows einfach nicht existieren (insbesondere Fork). Das Gegenteil ist auch wahr.

Andere Systeme haben ihre eigene libc.

  • Microsoft liefert den Quellcode für die C-Laufzeit mit Visual Studio aus (sogar mit der kostenlosen Express-Version, glaube ich). Allerdings tut es das nicht Fügen Sie die Quelle aus irgendeinem Grund in die Gleitkommaroutinen (oder zumindest einen guten Teil davon) ein. Vielleicht sind sie von einem Drittanbieter lizenziert, der möglicherweise keine Quellenverteilung zulässt? Ich wäre überrascht, wenn MS sie als wichtigeren Teil der IP betrachten würde als andere Teile der Laufzeit.

    – Michael Burr

    12. Juli 2012 um 23:00 Uhr

Das Paket glibc enthält Standardbibliotheken, die von mehreren Programmen auf dem System verwendet werden. Um Speicherplatz und Arbeitsspeicher zu sparen und Upgrades zu vereinfachen, wird gemeinsamer Systemcode an einem Ort aufbewahrt und von Programmen gemeinsam genutzt. Dieses spezielle Paket enthält die wichtigsten Sätze 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 die Landessprache (Gebietsschema).

Hier ein paar “Hands-on”-Sichtweisen:

Ja, es ist die Implementierung von Standardbibliotheksfunktionen.

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

1415210cookie-checkWas ist GLIBC? Was wird es verwendet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy