ld.so

Autres langues

Langue: fr

Version: 25 juillet 2003 (openSuse - 09/10/07)

Section: 8 (Commandes administrateur)

NOM

ld.so, ld-linux.so* - Chargeur et éditeur de liens dynamique.

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 for 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écessaire à un programme sont recherchées dans différents endroits :

o
(ELF seul) En utilisant 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 seul) En utilisant 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édement trouvées dans des chemins pas 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ées.
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.

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]]

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 PATH
Surcharge la variable d'environnement LD_LIBRARY_PATH (voir plus bas).
--ignore-rpath LISTE
Ignorer les informations RPATH and RUNPATH dans les objets de la LISTE. Cette oprtion a été supportée par la GlibC2 pendant environ une heure. Puis elle a été renommée en :
--inhibit-rpath 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 blancs de bibliothèques ELF spécifiques à l'utilisateur, a 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 standards seront chargées.
LD_BIND_NOW
(libC 5 ; GibC 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 seul) Si la chaine 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 seul)(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 seul)(libC5) Supprimer les avertissement à propos des bibliothèques a.out incompatibles avec les versions antérieure
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 message 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 envcoyé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 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 la sortie standard. LD_DEBUG_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 seul)(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ées des répertoires où des bibliothèques se trouvent.
/etc/ld.so.preload
Fichier contenant une liste de librairie 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

Christophe Blaess, 2003.