Provided by: manpages-fr-extra_20111118_all bug

NOM

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

DESCRIPTION

       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.  Les  bibliothèques  installées  dans  des  répertoires  de capacité
              matérielle (voir ci-dessous) sont préférées aux autres bibliothèques.

       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
              Objet 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.

CAPACITÉS MATÉRIELLES

       Les bibliothèques peuvent être compilées en  utilisant  des  instructions  spécifiques  au
       matériel qui n'existent pas pour tous les microprocesseurs. Ces bibliothèques doivent être
       installées dans des  répertoires  dont  le  nom  définit  une  capacité  matérielle  comme
       /usr/lib/sse2/.  L'éditeur  de  lien  dynamique  vérifie  ces  répertoires  en fonction du
       matériel et sélectionne la version la mieux adaptée  pour  une  bibliothèque  donnée.  Les
       répertoires   de   capacité   matérielle   peuvent   être   imbriqués  pour  combiner  les
       caractéristiques   du   microprocesseur.   Les   capacités   matérielles   dépendent    du
       microprocesseur. Les noms suivants sont reconnus pour le moment.

       Alpha  ev4, ev5, ev56, ev6, ev67.

       MIPS   loongson2e, loongson2f, octeon, octeon2.

       PowerPC
              4xxmac,  altivec,  arch_2_05,  arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle,
              fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+,  power6x,  ppc32,  ppc601,
              ppc64, smt, spe, ucache, vsx.

       SPARC  flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2.

       s390   dfp,  eimm,  esan3,  etf3enh,  g5,  highgprs, hpage, ldisp, msa, stfle, z900, z990,
              z9-109, z10, zarch.

       x86 (uniquement 32 bits)
              acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586,  i686,  mca,  mmx,
              mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm.

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                                   LD.SO(8)