LD.SO
Section : Manuel de l'administrateur Linux (
8)
Mise à jour de la version anglaise : 18 avril 2008
Index
Menu principal
NOM
ld.so, ld-linux.so* - Chargeur et éditeur de liens dynamique
SYNOPSIS
L'éditeur de lien dynamique peut être lançé indirectement en démarrant un
programme lié dynamiquement ou une bibliothèque (dans ce cas, aucune option
en ligne de commande ne peut être transmise, et avec ELF, l'éditeur
indiqué dans la section
.interp
du programme est exécuté), ou directement en lançant :
/lib/ld-linux.so.*
[OPTIONS] [PROGRAMME [ARGUMENTS]]
DESCRIPTION
Les programmes
ld.so
et
ld-linux.so*
trouvent et chargent les bibliothèques partagées nécessaires pour un
programme, préparent son démarrage, et le lancent.
Les binaires Linux nécessitent une édition de liens dynamique
(au démarrage) sauf si l'option
-static
a été indiquée sur la ligne de commande de
ld
durant la compilation.
Le programme
ld.so
traite les binaires a.out, un format utilisé il y a bien longtemps ;
ld-linux.so*
traitent les fichiers ELF
(/lib/ld-linux.so.1
pour libc5,
/lib/ld-linux.so.2
pour glibc2),
que tout le monde utilise depuis des années.
Autrement, les deux programmes ont le même comportement et utilisent
les fichiers et programmes
ldd(1),
ldconfig(8)
et
/etc/ld.so.conf.
Les bibliothèques partagées nécessaires à un programme sont recherchées
dans l'ordre suivant :
- o
-
(ELF seulement) En utilisant les répertoires indiqués dans l'attribut
de section dynamique DT_RPATH
du fichier binaire s'il est présent, et l'attribut DT_RUNPATH sinon.
L'utilisation de DT_RPATH est déconseillée.
- o
-
En utilisant la variable d'environnement
LD_LIBRARY_PATH.
Sauf si l'exécutable est un binaire Set-UID ou Set-GID,
auquel cas elle est ignorée.
- o
-
(ELF seulement) En utilisant les répertoires indiqués dans
l'attribut de section dynamique DT_RUNPATH
du fichier binaire s'il est présent.
- o
-
Depuis le fichier cache
/etc/ld.so.cache
qui contient une liste compilée de bibliothèques précédemment trouvées
dans des chemins par défaut.
Si toutefois le fichier binaire a été lié avec l'option
-z nodeflib
de l'éditeur de liens, les chemins par défaut sont ignorés.
- o
-
Dans le répertoire par défaut
/lib,
puis
/usr/lib.
Si le binaire a été lié avec l'option
-z nodeflib
de l'éditeur de lien, cette étape est sautée.
$ORIGIN et rpath
ld.so
comprend la chaîne
$ORIGIN
(ou de manière équivalente
${ORIGIN})
dans une spécification rpath (DT_RPATH ou DT_RUNPATH) comme indiquant
le répertoire contenant l'exécutable de l'application.
Ainsi, une application située dans
un_répertoire/app
peut être compilée avec
gcc -Wl,-rpath,aq$ORIGIN/../libaq
de sorte qu'elle trouvera un bibliothèque partagée associée dans
un_répertoire/lib
où que soit situé
un_répertoire
dans la hiérarchie du répertoire.
Cela facilite la création d'applications « prêtes à utiliser » qui n'ont
pas besoin d'être installées dans un répertoire particulier
mais au contraire être installées dans n'importe qul répertoire
et toujours trouver leurs propres bibliothèques partagées.
OPTIONS
- --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 PATH
-
Surcharge la variable d'environnement
LD_LIBRARY_PATH
(voir plus bas).
- --inhibit-rpath LISTE
-
Ignorer les informations RPATH et RUNPATH dans les objets de la LISTE.
ENVIRONNEMENT
Il y a quatre variables d'environnement importantes.
- LD_LIBRARY_PATH
-
Une liste de répertoires séparés par des points-virgules, dans lesquels
les bibliothèques sont recherchées au démarrage.
Comme la variable d'environnement
PATH.
- LD_PRELOAD
-
Une liste, séparée par des espaces, de bibliothèques ELF 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 Set-UID/Set-GID, seules les bibliothèques Set-UID
des répertoires standard seront chargées.
- LD_BIND_NOW
-
(libc5 ; glibc depuis 2.1.1)
Si la chaîne est non vide, l'éditeur de lien résoudra tous les symboles
au démarrage du programme plutôt que repousser la résolution des noms
de fonctions au moment où elles sont référencées en premier.
Ceci est utile dans un débogueur.
- LD_TRACE_LOADED_OBJECTS
-
(ELF seulement)
Si la chaîne est non vide, le programme liste ses dépendances dynamiques
comme s'il était lancé par
ldd(1),
au lieu du lancement normal.
Il existe de nombreuses autres variables plus ou moins obscures,
certaines obsolètes, ou résevées pour un usage interne.
- LD_WARN
-
(ELF seulement)(glibc depuis 2.1.3)
Si la chaîne est non vide, avertir si un symbole n'est pas résolu.
- LD_NOWARN
-
(a.out seulement)(libc5)
Supprimer les avertissements à propos des bibliothèques a.out incompatibles
avec les versions antérieures.
- LD_BIND_NOT
-
(glibc depuis 2.1.95)
Ne pas mettre à jour les tables GOT (global offset table) et PLT
(procedure linkage table) après résolution d'un symbole.
- LD_DEBUG
-
(glibc depuis 2.1)
Afficher de nombreuses informations de débogage de l'éditeur dynamique.
Si elle contient
all,
afficher tous les messages d'information, si elle contient
help,
afficher un message d'aide à propos des catégories de messages pour cette
variable d'environnement.
- LD_DEBUG_OUTPUT
-
(glibc depuis 2.1)
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 Set-UID/Set-GID.
- LD_VERBOSE
-
(glibc depuis 2.1)
S'il s'agit d'une chaîne non vide, afficher les informations sur la version
des objets sur lesquels on demande des informations sur le programme (si
LD_TRACE_LOADED_OBJECTS
a été configuré, ou si les options
--list
ou
--verify
ont été données à l'éditeur de liens dynamiques).
- LD_PROFILE
-
(GlicC depuis 2.1)
Activer le suivi des objets partagés.
- LD_PROFILE_OUTPUT
-
(glibc depuis 2.1)
Fichier où la sortie de
LD_PROFILE
est envoyée.
Par défaut, c'est la sortie standard.
LD_PROFILE_OUTPUT
est ignoré pour les binaires Set-UID/Set-GID.
- LD_AOUT_LIBRARY_PATH
-
(LibC5)
Version de
LD_LIBRARY_PATH
pour les binaire a.out seulement.
Les anciennes versions de ld-linux.so.1 supportent
LD_ELF_LIBRARY_PATH.
- LD_AOUT_PRELOAD
-
(LibC5)
Version de
LD_PRELOAD
pour les binaires a.out seulement.
Les anciennes versions de ld-linux.so.1 supportent
LD_ELF_PRELOAD.
- LD_SHOW_AUXV
-
(glibc depuis 2.1)
Afficher les tables auxiliaires passées au noyau.
- LD_HWCAP_MASK
-
(glibc depuis 2.1)
Masque des capacités matérielles.
- LD_ORIGIN_PATH
-
(glibc depuis 2.1)
Chemin du fichier binaire (pour les programmes non Set-UID).
- LD_DYNAMIC_WEAK
-
(glibc depuis 2.1.91)
Autorise la surcharge des symboles faibles
(retour à l'ancien comportement).
- LD_KEEPDIR
-
(a.out seulement)(LibC5)
Ne pas ignorer le répertoire dans les noms de bibliothèques a.out.
Cette option est très déconseillée.
- LDD_ARGV0
-
(LibC5)
argv[0]
à utiliser par
ldd(1)
si aucun n'est présent.
FICHIERS
- /lib/ld.so
-
Le chargeur/éditeur de lien a.out.
- /lib/ld-linux.so.{1,2}
-
Le chargeur/éditeur de liens ELF.
- /etc/ld.so.cache
-
Fichier contenant la liste compilée des répertoires
où des bibliothèques se trouvent.
- /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.
- lib*.so*
-
Bibliothèques partagées.
NOTES
Les fonctionnalités
ld.so
sont disponibles pour les exécutables compilés à partir
de la libc version 4.4.3 et ultérieures.
Les fonctionnalités ELF sont disponibles depuis 1.1.52 et la libc5.
VOIR AUSSI
ldd(1),
ldconfig(8)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 25 juillet 2003
et révisée le 17 juillet 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 8 ld.so ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- $ORIGIN et rpath
-
- OPTIONS
-
- ENVIRONNEMENT
-
- FICHIERS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008