Édition de liens

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 12 février 2016 à 05:49 et modifiée en dernier par ProgMan (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
Illustration du principe de l'édition de liens. Les fichiers objets et les bibliothèques statiques sont assemblés en une nouvelle bibliothèque (statique ou dynamique), ou un fichier exécutable.

Lors du développement d'un programme informatique, l’édition des liens est un processus qui permet de créer des fichiers exécutables ou des bibliothèques dynamiques ou statiques, à partir de fichiers objets et de bibliothèques statiques.

La compilation d'un fichier source vers un fichier objet laisse l'identification de certains symboles à plus tard. Avant de pouvoir exécuter ces fichiers objets, il faut résoudre les symboles et les lier à des bibliothèques ou d'autres fichiers objets. Le lien avec une bibliothèque peut être :

  • statique : le fichier objet et la bibliothèque sont liés dans le même fichier exécutable ;
  • dynamique : le fichier objet est lié avec la bibliothèque, mais pas dans le même fichier exécutable ; les liens dynamiques sont établis pendant l'exécution du fichier exécutable, c'est-à-dire du programme exécutable.

Les assembleurs et les compilateurs sont généralement livrés avec un lieur (linker) ou éditeur de liens, un programme chargé de faire l'édition des liens.

Certains langages modernes (Java, langages .NET) n'ont pas besoin de cette étape d'édition des liens et résolvent les adresses dynamiquement (au prix d'un temps de calcul plus important).

Édition des liens

La phase d’édition des liens consiste en la construction d'une image mémoire contenant l’ensemble des parties de code compilées séparément (modules, sous-programmes ou bibliothèques de sous-programmes). L'éditeur de liens a pour rôle de lier les fichiers objets (fichiers simplement compilés) avec les fichiers précompilés d'une ou plusieurs bibliothèques.

Bibliothèques dynamiques

L’édition des liens est aussi capable de créer les références appropriées vers les fonctions contenues dans les « bibliothèques dynamiques partagées », dont le chargement (assuré par le système d'exploitation) est retardé jusqu’au moment de l’exécution du code objet. De telles bibliothèques partagées permettent de réduire la taille des fichiers exécutables produits par la compilation et l’édition de liens (lorsque le code de la bibliothèque est commun à plusieurs programmes). Elles sont populaires sous le nom de dynamically linked library (DLL, sous Windows) ou shared object (SO) ou dynamic library (DYLIB, sous Mac).