Principes de base de la liaison
Qu'est-ce que la liaison ?
La liaison est un processus crucial dans le développement logiciel qui combine des fichiers objets et des bibliothèques distincts en un seul programme exécutable. En programmation C, le linker (éditeur de liens) joue un rôle essentiel dans la résolution des références entre différents modules de code et dans la création de l'exécutable final.
Types de liaison
Il existe deux types principaux de liaison en programmation C :
Liaison statique
- Les fichiers objets sont combinés au moment de la compilation
- Le code entier de la bibliothèque est intégré dans l'exécutable
- Taille de l'exécutable plus importante
- Pas de dépendance à l'exécution vis-à-vis des bibliothèques externes
Liaison dynamique
- Les bibliothèques sont liées à l'exécution
- Taille de l'exécutable plus petite
- Les bibliothèques partagées peuvent être mises à jour indépendamment
- Plus économique en mémoire
Flux de travail du processus de liaison
graph TD
A[Source Files] --> B[Compilation]
B --> C[Object Files]
C --> D[Linker]
D --> E[Executable]
Composants clés de la liaison
Composant |
Description |
Fichiers objets |
Modules de code compilés avec des références non résolues |
Table des symboles |
Contient des informations sur les fonctions et les variables |
Entrées de relocalisation |
Aide le linker (éditeur de liens) à résoudre les adresses mémoire |
Exemple de base de liaison
Considérons un exemple simple avec plusieurs fichiers sources :
// math.h
int add(int a, int b);
// math.c
#include "math.h"
int add(int a, int b) {
return a + b;
}
// main.c
#include <stdio.h>
#include "math.h"
int main() {
int result = add(5, 3);
printf("Result: %d\n", result);
return 0;
}
Pour compiler et lier ces fichiers sur Ubuntu 22.04 :
## Compile object files
gcc -c math.c
gcc -c main.c
## Link object files
gcc math.o main.o -o program
## Run the executable
./program
Options de liaison courantes
-l
: Lier avec des bibliothèques spécifiques
-L
: Spécifier le chemin de recherche des bibliothèques
-shared
: Créer une bibliothèque partagée
Astuce LabEx
Lorsque vous apprenez les techniques de liaison, LabEx propose des environnements pratiques pour vous permettre de vous entraîner et de comprendre les subtilités du processus de liaison en programmation C.