Qu'est-ce que Éditeur de liens dynamique ?
Logiciel qui, au lancement d'un programme lié dynamiquement, recherche et charge les bibliothèques partagées, effectue la relocalisation et la liaison des symboles, puis démarre le programme. Par exemple ld.so sous Linux.
Nom japonais: 動的リンカ
« Éditeur de liens dynamique » apparaît dans 10 questions d'entraînement réparties sur 1 thèmes, dont Éditeurs de liens, chargeurs et exécutables.
Domaine: Éditeurs de liens, chargeurs et exécutables
Ce qui se passe au lancement d'un programme
Un exécutable ELF lié dynamiquement désigne un interpréteur dans ses en-têtes de programme, comme ld-linux sous Linux. Après qu'execve a projeté le programme en mémoire, le noyau projette aussi cet éditeur de liens dynamique et lui transfère le contrôle plutôt qu'au programme. L'éditeur de liens dynamique lit la liste des bibliothèques nécessaires, les recherche dans les chemins configurés et dans son cache, les projette dans l'espace d'adressage, applique les relocalisations, lie les symboles, exécute les fonctions d'initialisation des bibliothèques (listées dans des sections comme .init_array), puis saute enfin au point d'entrée du programme. Les bibliothèques ouvertes plus tard avec dlopen passent par le même mécanisme.
Questions fréquentes
Qu'est-ce que ld.so sous Linux ?
C'est l'éditeur de liens et chargeur dynamique : le programme que le noyau exécute en premier pour un exécutable lié dynamiquement, qui charge les bibliothèques partagées, résout les symboles puis démarre le programme.
Pourquoi mon programme indique-t-il qu'une bibliothèque partagée est introuvable ?
L'éditeur de liens dynamique n'a pas pu localiser une bibliothèque requise dans ses chemins de recherche, ou n'y a trouvé qu'une version incompatible. Exécuter ldd sur le programme indique quelle dépendance manque.
Quelle différence entre la GOT et la PLT ?
La GOT est une table de données contenant les adresses résolues, remplie par l'éditeur de liens dynamique, tandis que la PLT est un ensemble de petits stubs de code par lesquels passent les appels de fonctions externes, qui lisent leurs cibles dans la GOT.