USELIB(2)

NOM
uselib - Charger une bibliothèque partagée

SYNOPSIS
#include <unistd.h>

int uselib(const char *library);

DESCRIPTION
L'appel système uselib() sert à charger une bibliothèque partagée qui sera utilisée par le processus appelant. On lui fournit un chemin. L'adresse où charger est trouvée dans la bibliothèque elle-même. Cette bibliothèque peut avoir tout format binaire reconnu.

VALEUR RENVOYÉE
uselib() renvoie 0 s'il réussit, -1 s'il échoue auquel cas errno contient le code d'erreur.

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'a pas les permissions de lecture ou d'exécution, ou l'appelant n'a pas la permission de parcours pour l'un des répertoires du chemin. (Voir 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 doit pas être employé dans des programmes destinés à être portables.

NOTES
uselib() était utilisé par le code de démarrage de la précédente libc pour charger les bibliothèques partagées dont les noms se trouvaient dans un tableau de noms dans le bianire.

Depuis la libc 4.3.2, le code de démarrage essaie de préfixer ces noms avec "usr/lib", "/lib" et "" avant d'abandonner. Dans la libc 4.3.4 et suivantes, ces noms sont recherchés dans les répertoires trouvés dans LD_LIBRARY_PATH, et s'il n'y sont pas trouvés, les prefixes « /usr/lib », « /lib » et « / » sont essayés.

Depuis la libc 4.4.4, seule la bibliothèque « /lib/ld.so » est chargée, de sorte que cette bibliothèque dynamique peut charger les autres bibliothèques nécessaires (utilisant également cet appel). C'est également l'état des choses dans la libc5

glibc2 n'utilise pas cet appel.

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

TRADUCTION

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 22 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 uselib ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.