Liaison statique et dynamique
Il existe deux types d'exécutables binaires: ceux liés statiquement et ceux liés dynamiquement. Tout d'abord sur les liens statiques : lorsqu'un programme veut appeler une fonction de bibliothèque, il s'y réfère par son nom. Lors de la création du programme à partir de la source, toutes les fonctions de bibliothèque utilisées dans le programme sont copiées de la bibliothèque dans le programme. Le programme contient alors son propre code ainsi que le code des fonctions de bibliothèque qu'il utilise. Ensuite, dans les lieux d'appel, le nom est changé en l'adresse de la fonction correspondante dans le programme. Ce processus est appelé liaison car il relie le nom d'une fonction à la fonction elle-même, son implémentation. C'est ce qu'on appelle statique , car le lien ne peut pas être modifié après la construction du programme.
Les programmes liés dynamiquement fonctionnent différemment: le programme fait également référence aux fonctions de bibliothèque par leur nom. Lors de la construction du programme, deux listes sont assemblées et stockées avec le programme: une liste des fonctions de bibliothèque utilisées à quels endroits et une liste des bibliothèques contenant les fonctions utilisées par le programme. C'est tout pour construire le programme.
Plus tard, au moment de l'exécution , un programme d'aide spécial, le soi-disant éditeur de liens dynamiques, recherche dans des endroits spécifiques du système de fichiers chaque bibliothèque de la liste des bibliothèques et la charge en mémoire. L'éditeur de liens dynamique sait maintenant à quelles adresses de mémoire les fonctions de bibliothèque sont disponibles. Il utilise la première liste pour écrire l'adresse correcte dans tous les endroits qui appellent des fonctions de bibliothèque. Ensuite, le programme lié dynamiquement peut être exécuté.