Vous semblez être accroché à la terminologie. Le terme «lien dynamique» est un terme impropre quant à ce qui se passe réellement.
Linkers traitent généralement trois types de fichiers:
- objet Fichiers
- bibliothèques d'objets
- bibliothèques partagées
Une bibliothèque d'objets est un fichier qui contient d'autres fichiers objets qui peuvent être extrait de celui-ci, donc je vais ignorer cette alternative.
Un fichier objet contient une table de symboles globaux définis par le fichier et une table de symboles globaux référencés par le fichier. L'éditeur de liens "lie" les références dans le fichier aux définitions d'un autre fichier. Il ajoute le code et le contenu des données du fichier lié à l'exécutable (ou à la bibliothèque partagée).
Une bibliothèque partagée contient une table de symboles universels définis et des symboles universels référencés par la bibliothèque. Un éditeur de liens "lie" les références de symboles globaux dans les fichiers objet au fichier de bibliothèque partagé. A la fin de la liaison, l'exécutable (ou la bibliothèque partagée) sait quel fichier de bibliothèque partagé contient le symbole mais ne sait pas où se trouve le symbole.
Parfois, le processus de liaison de telles bibliothèques partagées est appelé "liaison dynamique". L'exécutable dispose d'une table de références globales de symboles qui ont été mappées à des bibliothèques partagées de symboles universels.
Lorsque vous exécutez l'exécutable, le chargeur de programme examine les bibliothèques exécutables avant référencées. Il faudra alors (1) charger la librairie partagée; (2) lire la table des symboles universels de la bibliothèque et chercher l'adresse des symboles référencés; (3) corriger les références à ces symboles dans l'exécutable.Parce que les bibliothèques partagées peuvent référencer d'autres bibliothèques partagées, il s'agit d'un processus récursif.
Parfois, ce processus de chargement d'un programme faisant référence à des bibliothèques partagées lors de l'exécution est appelé "liaison dynamique". (Maintenant nous avons deux définitions du même terme.)
De nombreux systèmes d'exploitation font les mêmes services système utilisés pour charger des bibliothèques partagées et trouver des adresses de symboles universels dans des bibliothèques partagées disponibles pour les applications. Au moment de l'exécution (après le chargement de l'application), l'application peut accéder dynamiquement à une fonction ou à un autre symbole universel en (1) chargeant la bibliothèque partagée et (2) en localisant le symbole souhaité. C'est ce que vous appelez "chargement dynamique".
Copie possible de [différence entre chargement dynamique et liaison dynamique?] (Http://stackoverflow.com/questions/10052464/difference-between-dynamic-loading-and-dynamic-linking) – bolov