Édition de liens
# Édition de liens

Première étape de la génération d'un programme informatique, la compilation d'un fichier source vers un fichier objet laisse l'identification de certains symboles à plus tard.

Seconde étape de la génération d'un programme informatique, l’édition des liens permet de créer un fichier exécutable (programme exécutable), une bibliothèque dynamique ou une bibliothèque statique, à partir de fichiers objets et des routines provenant de bibliothèques statiques.

Pour ce faire, l’édition des liens doit résoudre les symboles et les lier aux routines des bibliothèques ou d'autres fichiers objets. Les liens avec les routines peuvent être :

* statiques : le fichier objet et les routines utilisées provenant des bibliothèques statiques sont intégrés dans le même fichier exécutable ;
* dynamiques : le fichier objet est intégré dans le fichier exécutable alors que ce dernier ne contient que les liens vers les routines utilisées des bibliothèques dynamiques (les routines provenant des bibliothèques dynamiques ne sont pas intégrées dans le fichier 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). D'autres (notamment Ada) intègrent la modularité au niveau du langage, ce qui permet de gérer l'origine des noms et de résoudre les éventuels conflits plus tôt, lors de la compilation, et de réaliser l'édition de liens de manière statique, sans perte de performance, et automatique (les éventuels conflits de noms ont déjà été résolus).

## Édition des liens

L'étape 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).

