Le fichier /etc/ld.so.conf contient les répertoires des librairies qu’utilise les executables de ton système. En gros les librairies utiles à la bonne execution des binaires.
ldconfig crée les liens nécessaires et met en cache les bibliothèques partagées les plus récentes trouvées dans les répertoires indiqués sur la ligne de commande, dans le fichier /etc/ld.so.conf, et dans les répertoires sûrs (/lib et /usr/lib). Le cache est utilisé par le chargeur / éditeur de liens ld.so ou ld-linux.so. ldconfig vérifie les en-têtes et noms des fichiers des bibliothèques qu’il trouve pour déterminer les versions et mettre à jour les liens.
ldconfig essaye de déduire le type bibliothèque ELF (LibC5 ou LibC6/GlibC) en se basant sur la bibliothèque C utilisée pour les liens de la bibliothèque. Ainsi, lorsqu’on crée une bibliothèque dynamique, il est sage d’indiquer explicitement la bibliothèque C utilisée (en employant l’option -lc).
Certaines bibliothèques existantes ne contiennent pas assez d’information pour déduire leur type. Ainsi, le format du fichier their type. Therefore, the /etc/ld.so.conf permet d’indiquer le type attendu. Cela ne doit servir que pour les bibliothèques ELF qui ne fonctionnent pas sinon. Le format est “dirname=TYPE”, où TYPE peut être libc4, libc5 ou libc6. (Cette syntaxe marche aussi sur la ligne de commande). Les espaces ne sont pas autorisés. Voir aussi l’option -p. Normalement ldconfig doit être lancé par le Super-Utilisateur, car il peut avoir besoin de l’autorisation d’écriture sur certains fichiers appartenant à root.
OPTIONS
-v
Mode volubile. Affiche le numéro de version actuelle, le nom de chaque répertoire au fur et à mesure du parcours, et les liens qui sont créés. Peut surcharger le mode silencieux.
-n
Ne traiter que les répertoires indiqués sur la ligne de commande. Ne pas s’occuper des répertoires sûrs (/lib et /usr/lib) ni de ceux indiqués dans /etc/ld.so.conf. Nécessité l’option -N.
-N
Ne pas reconstruire le cache. Si l’option -X n’est pas indiquée, les liens sont quand même mis à jour.
-X
Ne pas mettre à jour les liens. Si l’option -N n’est pas indiquée, le cache est quand même reconstruit.
-f configuration
Utiliser le fichier de configuration indiqué plutôt que /etc/ld.so.conf.
-C cache
Utiliser le cache indiqué plutôt que /etc/ld.so.cache.
-r racine
Se déplacer vers, et utiliser le répertoire racine indiqué.
-l
Mode bibliothèque. Lier manuellement les bibliothèques individuelles. Destiné seulement aux experts.
-p
Afficher la liste des répertoires et des bibliothèques potentielles enregistrés dans le cache actuel.
/lib/ld.so
chargeur/éditeur de liens dynamiques
/etc/ld.so.conf
liste de répertoires où chercher les bibliothèques, séparés par des blancs, des virgules ou des deux-points. File containing a list of colon, space, tab, newline, or comma spearated
/etc/ld.so.cache
liste ordonnée des bibliothèques trouvées dans les répertoires indiqués dans /etc/ld.so.conf.
Utilisation de bibliothèques partagées
Les bibliothèques partagées ne sont chargées que lorsqu’un programme les appellent, ce qui permet de gagner de la place en mémoire. Pour savoir à quelles bibliothèques partagées est lié un programme, utiliser la commande ldd. Par exemple pour le programme /usr/bin/X11/xterm :
ldd /usr/bin/X11/xterm
Le résultat devrait ressembler à ca :
libXaw.so.6 => /usr/X11R6/lib/libXaw.so.6 (0x4000b000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40042000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40054000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40096000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4009f000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400b4000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400bf000)
libc.so.5 => /lib/libc.so.5 (0x4015e000)
La ligne libc.so.5 => /lib/libc.so.5 (0x4015e000) par exemple indique la bibliothèque C standard de version 5.
L’éditeur de liens dynamiques ld.so recherchera les bibliothèques dans les répertoires /lib, /usr/lib, et dans les répertoires spécifiés dans le fichier /etc/ld.so.conf et dans la variable d’environement $LD_LIBRARY_PATH (utile pour ses propres bibliothèques confidentielles, par exemple). Il faut par ailleurs invoquer la commande ldconfig après chaque modification du fichier /etc/ld.so.conf.
Les bibliothèques partagées ont une extension .so et se trouvent en général dans le répertoire /lib. Le système recherche toujours sur le numéro de version majeur les noms de bibliothèques : /lib/libc.so.5.4.33 a un numéro majeur de version 5 et un numéro mineur de version 4, par exemple. La bibliothèque recherchée sera /lib/libc.so.5, qui est un lien symbolique vers /lib/libc.so.5.4.33 comme l’indique la commande ls -l :
lrwxrwxrwx 1 root root 13 Nov 3 17:58 /lib/libc.so.5 ->
libc.so.5.4.33*
-rwxr-xr-x 1 root root 634880 Apr 29 1996 /lib/libc.so.5.4.33*