USELIB(2)

NOM
uselib - Sélectionner une bibliothèque partagée

SYNOPSIS
#include <unistd.h>

int uselib(const char *library);

Remarque : cet appel système n'est pas déclaré par les en-têtes de la glibc ; consultez la section NOTES.

DESCRIPTION
L'appel système uselib() permet de charger une bibliothèque partagée qui sera utilisée par le processus appelant. Il prend un chemin de fichier comme argument. L'adresse où charger la bibliothèque est trouvée dans la bibliothèque elle-même. La bibliothèque peut avoir n'importe quel format de binaire reconnu.

VALEUR RENVOYÉE
En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno reçoit une valeur adéquate.

ERREURS
En plus de toutes les erreurs déclenchées par open(2) et mmap(2), les erreurs suivantes peuvent se produire :

EACCES
    La bibliothèque indiquée par library n'est pas accessible en lecture ou en écriture, ou l'appelant n'a pas la permission de parcours pour l'un des répertoires du chemin. (Consultez aussi path_resolution(7).)

ENFILE
    La limite du nombre total de fichiers ouverts pour le système entier a été atteinte.

ENOEXEC
    Le fichier décrit par library n'est pas un exécutable de type connu (par exemple n'a pas le bon nombre magique).

CONFORMITÉ
uselib() est spécifique à Linux et ne devrait pas être employé dans des programmes destinés à être portables.

NOTES
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.

Depuis libc 4.3.2, le code de démarrage essaie de préfixer ces noms avec "/usr/lib", "/lib" puis "" avant d'abandonner. À partir de la libc 4.3.4, ces noms sont recherchés dans les répertoires listés dans la variable LD_LIBRARY_PATH, et les préfixes "/usr/lib", "/lib" et "/" sont essayés ensuite si la bibliothèque n'a pas été trouvée.

À partir de la libc 4.4.4, seule la bibliothèque « /lib/ld.so » est chargée, afin que cette bibliothèque dynamique puisse charger les autres bibliothèques requises (à nouveau avec cette fonction). Ceci est également valable pour libc5.

glibc2 n'utilise pas cette fonction.

Since Linux 3.15, this system call is available only when the kernel is configured with the CONFIG_USELIB option.

VOIR AUSSI
ar(1), gcc(1), ld(1), ldd(1), mmap(2), open(2), dlopen(3), capabilities(7), ld.so(8)

COLOPHON
Cette page fait partie de la publication 5.08 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org> Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french@lists.debian.org>.