NOM
ld.so, ld-linux.so - Chargeur et éditeur de liens dynamique.
Le programme ld.so trouve et charge les bibliothèques partagées
nécessaires pour un programme, prépare son démarrage, et le lance. À
moins que l’option -static n’ait été indiquée sur la ligne de commande
de ld durant la compilation, un binaire Linux n’est pas autonome et
nécessite une édition de liens dynamique pendant son lancement.
Les bibliothèques partagées nécessaires à un programme sont recherchées
consécutivement dans les endroits suivants :
o En utilisant la variable d’environnement LD_LIBRARY_PATH
(LD_AOUT_LIBRARY_PATH pour le format a.out), sauf si
l’exécutable est un binaire setuid ou setgid, auquel cas elle
est ignorée.
o Depuis le fichier cache /etc/ld.so.cache qui contient une liste
compilée de bibliothèques candidates trouvées lors des
exécutions précédentes dans les chemins de recherche.
o Dans les répertoires par défaut /lib, puis /usr/lib.
OPTIONS EN LIGNE DE COMMANDE
--list Liste les dépendances et leurs résolutions.
--verify
Vérifie que le programme est lié dynamiquement et que l’éditeur
de liens peut le traiter.
--library-path CHEMIN
Surcharge la variable d’environnement LD_LIBRARY_PATH (voir plus
bas).
--ignore-rpath LISTE
Ignorer les informations RPATH et RUNPATH dans les objets de la
LISTE. Cette option a été supportée par la glibc2 pendant
environ une heure. Puis elle a été renommée en :
--inhibit-rpath LISTE
ENVIRONNEMENT
LD_LIBRARY_PATH
Comme la variable d’environnement PATH, cette variable contient
une liste de répertoires séparés par des deux-points. Les
bibliothèques au format ELF sont recherchées à l’exécution dans
ces répertoires.
LD_PRELOAD
Une liste de bibliothèques ELF (séparées par des blancs)
spécifiques à l’utilisateur, à charger avant les autres
bibliothèques. Ceci permet de surcharger sélectivement les
fonctions des autres bibliothèques partagées. Pour les binaires
ELF setuid et setgid, seules les bibliothèques setgid des
répertoires standards seront chargées.
LD_TRACE_LOADED_OBJECTS
Lorsqu’elle est présente, le programme liste ses dépendances
dynamiques comme s’il était lancé par ldd, au lieu de s’exécuter
normalement.
LD_BIND_NOW
Si elle est présente, l’éditeur de liens résoudra tous les
symboles au démarrage du programme au lieu de repousser la
résolution des noms de fonctions au moment de leur première
référence.
LD_BIND_NOT
Ne pas mettre à jour les tables GOT (« global offset table ») et
PLT («procedure linkage table ») après une résolution de
symbole.
LD_AOUT_LIBRARY_PATH
Comme la variable d’environnement PATH, cette variable contient
une liste de répertoires séparés par des deux-points. Les
bibliothèques au format a.out sont recherchées au démarrage dans
ces répertoires.
LD_AOUT_PRELOAD
Le nom d’une bibliothèque a.out spécifique à l’utilisateur, à
charger après les autres bibliothèques. Ceci permet de
surcharger sélectivement les fonctions des autres bibliothèques
partagées.
LD_NOWARN
Supprimer les avertissements à propos des bibliothèques a.out
incompatibles avec les numéros de versions mineures antérieures.
LD_WARN
Si la chaîne est non vide, avertir si un symbole n’est pas
résolu.
LD_KEEPDIR
Ne pas ignorer le répertoire dans les noms de bibliothèques
a.out. Cette option est très déconseillée.
LD_DEBUG
Afficher de nombreuses informations de débogage de l’éditeur
dynamique. Si elle vaut all, afficher tous les messages
d’information, si elle vaut help, afficher un message d’aide à
propos des catégories que peuvent valoir cette variable
d’environnement.
LD_DEBUG_OUTPUT
Fichier où la sortie de LD_DEBUG devrait être envoyée. Par
défaut, c’est la sortie standard. LD_DEBUG_OUTPUT est ignorée
pour les binaires setuid ou setgid.
LD_VERBOSE
S’il s’agit d’une chaîne non vide, afficher les informations sur
la version des objets pour lesquels on demande des informations
sur le programme (si LD_TRACE_LOADED_OBJECTS a été configurée,
ou si les options --list ou --verify ont été données à l’éditeur
de liens dynamique).
LD_PROFILE
Object partagé à profiler
LD_PROFILE_OUTPUT
Fichier où la sortie de LD_PROFILE doit être redirigée. Par
défaut, c’est la sortie standard. LD_PROFILE_OUTPUT est ignorée
pour les binaires setuid ou setgid.
LD_ASSUME_KERNEL
Chaque objet partagé dynamiquement (ou bibliothèque dynamique,
ou DSO : « Dynamic Shared Object ») peut indiquer à l’éditeur de
liens dynamique de la glibc quelle est la version minimale de
l’ABI du système est nécessaire. Cette information est codée
dans une section de note ELF souvent appelée « .note.ABI-tag ».
Ceci permet de déterminer quelle bibliothèque charger quand
plusieurs versions de la même bibliothèque sont installées sur
le système. La variable d’environnement LD_ASSUME_KERNEL
surcharge la version du noyau utilisée par l’éditeur de liens
dynamique qui détermine quelles bibliothèques doivent être
chargées.
EXPANSION DES VARIABLES RPATH
L’éditeur fournit un nombre de variables qui peuvent être utilisées
dans une spécification rpath (DT_RPATH ou DT_RUNPATH).
$ORIGIN
ls.so comprend la chaîne $ORIGIN (ou de manière équivalente
${ORIGIN}) dans un rpath pour signifier le répertoire où se
trouve l’exécutable de l’application. Une application située
dans un répertoire toto/app peut être compilée avec « gcc
-Wl,-rpath ’$ORIGIN/../lib’ » ; elle trouvera alors les
bibliothèques partagées associées dans toto/lib quel que soit
l’emplacement du répertoire toto dans le hiérarchie de fichiers.
$PLATFORM
La chaîne $PLATFORM (ou de manière équivalente ${PLATFORM}) dans
un rpath est remplacé par le type de processeur de la machine
actuelle. Notez que sur certaines architectures, le noyau Linux
ne fournit pas de chaînes à l’éditeur de liens.
$LIB La chaîne $LIB (ou de manière équivalente ${LIB}) dans un rpath
correspond au répertoire des bibliothèques systèmes, qui est
/lib sur les architectures GNU/Linux compatibles FHS.
FICHIERS
/lib/ld.so le chargeur/éditeur de liens dynamique a.out.
/lib/ld-linux.so.* Le chargeur/éditeur de liens dynamique ELF.
/etc/ld.so.cache Fichier contenant la liste compilée des répertoires
où se trouvent des bibliothèques, ainsi qu’une
liste ordonnée de bibliothèques candidates.
/etc/ld.so.preload Fichier contenant une liste de bibliothèques ELF,
séparées par des espaces, à charger avant de
démarrer le programme.
/etc/ld.so.nohwcap Quand ce fichier est présent, l’éditeur de liens
dynamique charge la version non optimisée de la
bibliothèque, même si le processeur peut gérer la
version optimisée.
lib*.so* Bibliothèques partagées.
VOIR AUSSI
ldd(1), ldconfig(8).
BOGUES
Actuellement, ld.so ne peut pas enlever un lien existant pour chercher
des bibliothèques compatibles ou plus récentes.
Les fonctionnalités de ld.so ne sont disponibles que pour des
programmes compilés avec une libc 4.4.3 ou plus récente (NdT : les
versions actuelles ont été renommées en glibc et le numéro de version a
été réinitialisé).
AUTEURS
David Engel, Eric Youngdale, Peter MacDonald, Hongjiu Lu, Linus
Torvalds, Lars Wirzenius et Mitch D’Souza (pas nécessairement dans cet
ordre).
TRADUCTION
Cette page de manuel a été traduite par Christophe Blaess <ccb AT club-
internet DOT fr> en 2003. La version présente dans Debian est
maintenue par les membres de la liste <debian-l10n-french AT lists DOT
debian DOT org>. Veuillez signaler toute erreur de traduction par un
rapport de bogue sur le paquet manpages-fr-extra.
26 mai 2007