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() permet de charger une bibliothèque partagée qui sera utilisée par le processus appelant. On lui fournit un chemin de fichier comme argument. L'adresse où charger la bibliothèque est trouvée dans la bibliothèque elle-même. Cette bibliothèque peut avoir n'importe quel format binaire reconnu.

VALEUR RENVOYÉE
Cet appel système 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 binaire.

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. Depuis la libc 4.3.4, 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.

À partir de la libc 4.4.4, seule la bibliothèque « /lib/ld.so » est chargée, de sorte que cette bibliothèque dynamique puisse charger les autres bibliothèques nécessaires (utilisant également cet appel). Ceci est également valable pour 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 23 juin 2008.

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.