USELIB(2)

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

SYNOPSIS
#include <unistd.h>

int uselib(const char *library);

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
S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.

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 sur le système 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
uselib() était utilisé par le code de démarrage d'anciennes versions de libc pour charger les bibliothèques partagées dont les noms se trouvaient dans un tableau dans le binaire.

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.

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 3.40 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://perkamon.alioth.debian.org/>.

Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».