uselib(2) eine gemeinsam benutzte Bibliothek laden

ÜBERSICHT

#include <unistd.h>

int uselib(const char *bibliothek);

Note: No declaration of this system call is provided in glibc headers; see NOTES.

BESCHREIBUNG

Der Systemaufruf uselib() dient dazu, eine gemeinsam benutzte Bibliothek für die Nutzung durch den aufrufenden Prozess zu laden. Ihr wird ein Pfadname übergeben. Die Ladeadresse befindet sich wird in der Bibliothek selbst. Die Bibliothek kann jedes bekannte binäre Format haben.

RÜCKGABEWERT

Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER

Zusätzlich zu all den Fehlercodes, die von open(2) und mmap(2) zurückgegeben werden, können auch folgende auftreten:
EACCES
Die durch bibliothek angegebene Bibliothek hat kein Lese- oder Ausführrecht oder der Aufrufende hat kein Suchrecht für eines der Verzeichnisse im Pfadpräfix. (Siehe auch path_resolution(7).)
ENFILE
Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde erreicht.
ENOEXEC
Die Datei, die durch bibliothek angegeben wird, ist keine ausführbare Datei eines bekannten Typs. Sie hat zum Beispiel nicht die richtigen magischen Zahlen.

KONFORM ZU

uselib() ist Linux-spezifisch und sollte nicht in portierbaren Programmen benutzt werden.

ANMERKUNGEN

This obsolete system call is not supported by glibc. No declaration is provided in glibc headers, but, through a quirk of history, glibc versions before 2.23 did export an ABI for this system call. Therefore, in order to employ this system call, it was sufficient to manually declare the interface in your code; alternatively, you could invoke the system call using syscall(2).

In ancient libc versions, uselib() was used to load the shared libraries with names found in an array of names in the binary.

Seit Libc 4.3.2 versucht der Anfangscode diesen Namen »/usr/lib«, »/lib« und »« voranzustellen, bevor er aufgibt. In Libc 4.3.4 und danach werden diese Namen in den Verzeichnissen gesucht, die im LD_LIBRARY_PATH gefunden werden. Falls diese nicht gefunden werden, werden »/usr/lib«, »/lib« und »/« ausprobiert.

Seit Libc 4.4.4 wird nur noch die Bibliothek »lib/ld.so« geladen, so dass diese dynamische Bibliothek die verbleibenden benötigten Bibliotheken laden kann (wieder mit diesem Aufruf). Dies ist auch der Stand der Dinge in Libc5.

Glibc2 benutzt diesen Aufruf nicht.

Seit Linux 3.15 ist der Systemaufruf nur verfügbar, falls der Kernel mit der Option CONFIG_USELIB konfiguriert wurde.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 des Projekts Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Hanno Wagner <[email protected]> und Chris Leick <[email protected]> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <[email protected]>.