2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
L'éditeur de liens joue un rôle essentiel dans le développement de programmes. Il est responsable de l'intégration de plusieurs fichiers objets et fichiers de bibliothèque dans un fichier exécutable. Avant d'aborder le fonctionnement de l'éditeur de liens, la différence entre les liens statiques et les liens dynamiques, et comment créer et utiliser des bibliothèques de liens dynamiques, décrivons d'abord les fonctions de base de l'éditeur de liens.
Éditeur de liens Il s'agit d'un outil chargé de combiner un ou plusieurs fichiers objets et fichiers de bibliothèque en un fichier exécutable. Ses principales fonctions comprennent :
Analyse de symboles : Identifiez et traitez tous les symboles (noms de fonctions et de variables) dans le programme, en vous assurant que chaque symbole a une définition unique. Pour les symboles référencés mais non définis (symboles externes), l'éditeur de liens recherche une définition dans une bibliothèque fournie ou dans un autre fichier objet.
réinitialiser : Ajustez les adresses de code et de données dans chaque module à l'adresse mémoire finale. La relocalisation inclut la correction d'adresse dans le code et l'ajustement de la position du segment de données pour garantir que toutes les références pointent vers l'emplacement mémoire correct.
fusionner des segments: Fusionnez des segments du même type (tels que des segments de code, des segments de données, etc.) de différents fichiers cibles en un seul segment continu.
bibliothèque de traitement : Liez le code de bibliothèque requis par le programme avec le fichier objet. L'éditeur de liens peut gérer deux types de bibliothèques : les bibliothèques statiques et les bibliothèques dynamiques.
Générer un fichier exécutable: La sortie finale est un fichier exécutable qui peut être exécuté sur le système d'exploitation.
Liaison statique etLiaison dynamique Il s'agit de deux modes de fonctionnement de l'éditeur de liens, chacun avec des caractéristiques et des scénarios d'utilisation différents.
concept : Dans la liaison statique, le code de la bibliothèque est copié au moment de la compilation et intégré dans chaque exécutable qui l'utilise. De cette façon, le fichier exécutable généré contient tout le code requis et ne repose pas sur des fichiers de bibliothèque externes.
avantage:
défaut:
Extension de bibliothèque statique:
.lib
.a
concept : Dans la liaison dynamique, le code de la bibliothèque est chargé au moment de l'exécution et n'est pas intégré dans le fichier exécutable. L'exécutable contient uniquement des références aux bibliothèques et le code de la bibliothèque est chargé par le système d'exploitation au moment de l'exécution.
avantage:
défaut:
Extension de bibliothèque dynamique:
.dll
(Bibliothèque de liens dynamiques).so
(Objet partagé)Sur différents systèmes d'exploitation, les méthodes de création de bibliothèques de liens dynamiques sont légèrement différentes. Voici quelques étapes et commandes courantes :
Écrire le code de la bibliothèque:
Créez un fichier source C contenant les fonctions que nous souhaitons placer dans la bibliothèque dynamique.
// example.cpp
#include