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.