Bibliothèques statiques et partagées
Construisez et liez des bibliothèques
Bibliothèques statiques et partagées est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.
Qu’est-ce qu’une bibliothèque
Une bibliothèque est un ensemble de fichiers objets compilés que vous pouvez réutiliser dans plusieurs programmes sans recompiler le code source à chaque fois.
Le langage C en distingue deux types :
- Les bibliothèques statiques (
.a), copiées dans l’exécutable lors de l’édition de liens - Les bibliothèques partagées (
.so), chargées au moment de l’exécution
Compiler les fichiers objets
Les deux types commencent par des fichiers objets. Compilez vos sources avec -c comme d’habitude.
Ces fichiers .o sont la matière première que l’archiveur ou l’éditeur de liens regroupera.
gcc -c mathlib.c -o mathlib.o
gcc -c strlib.c -o strlib.oCréer une bibliothèque statique
L’archiveur ar regroupe les fichiers objets dans une archive .a. Le nom conventionnel est lib<name>.a.
Les options signifient : r insérer, c créer si nécessaire, s écrire un index.
ar rcs libmymath.a mathlib.o strlib.oÉditer les liens avec une bibliothèque statique
Utilisez -L pour le répertoire de recherche et -l pour le nom de la bibliothèque (en retirant le préfixe lib et le suffixe .a).
Le code nécessaire est copié dans l’exécutable, qui peut ensuite fonctionner de manière autonome.
gcc main.c -L. -lmymath -o appCompromis des bibliothèques statiques
L’édition de liens statique est simple et autonome :
- L’exécutable contient tout : aucune dépendance à l’exécution
- Mais chaque programme qui en contient une copie produit des binaires plus volumineux
- Corriger un bogue dans une bibliothèque nécessite de refaire l’édition de liens de chaque programme qui l’utilise
Code indépendant de la position
Les bibliothèques partagées peuvent être chargées à n’importe quelle adresse mémoire : leur code doit donc être indépendant de la position. Compilez avec -fPIC.
Cela produit du code qui utilise un adressage relatif plutôt que des adresses fixes.
gcc -fPIC -c mathlib.c -o mathlib.o
gcc -fPIC -c strlib.c -o strlib.oCréer une bibliothèque partagée
Construisez le fichier .so avec -shared. La convention est lib<name>.so.
Contrairement à une archive statique, il s’agit d’un véritable objet lié que le chargeur peut mapper au moment de l’exécution.
gcc -shared mathlib.o strlib.o -o libmymath.soÉditer les liens avec une bibliothèque partagée
L’édition de liens est identique à celle du cas statique. La différence est que le code n’est pas copié : seule une référence est enregistrée.
L’exécutable reste petit, mais il dépend désormais de la présence de libmymath.so au moment de l’exécution.
gcc main.c -L. -lmymath -o appTrouver la bibliothèque au moment de l’exécution
Au démarrage, le chargeur dynamique recherche le fichier .so dans les chemins standard. Une bibliothèque située dans le répertoire courant ne figure pas dans cette liste.
Pour les tests, indiquez-la au chargeur avec LD_LIBRARY_PATH (Linux).
LD_LIBRARY_PATH=. ./appCompromis des bibliothèques partagées
Les bibliothèques partagées échangent la simplicité contre la flexibilité :
- Une seule copie en mémoire est partagée par plusieurs programmes, ce qui économise de la RAM et de l’espace disque
- Une correction de bogue dans le fichier
.soprofite à tous les programmes sans refaire l’édition de liens - Mais le programme ne démarre pas si le fichier
.soest absent ou incompatible
Ce dernier risque correspond au classique « enfer des dépendances ».
Inspecter les dépendances
Deux outils vous aident à voir avec quelles bibliothèques un binaire est lié :
ldd appliste les bibliothèques partagées dont le chargeur aura besoin au moment de l’exécutionnm libmymath.aliste les symboles (fonctions) contenus dans une bibliothèque
Si ldd affiche « not found », le chargeur ne peut pas trouver ce fichier .so dans son chemin de recherche.
ldd app
nm libmymath.aVérification rapide
Associez l’option à l’objectif correspondant.
Récapitulatif
Vous pouvez maintenant compiler et lier les deux types de bibliothèques :
- Statiques :
ar rcs libX.a *.o, code copié dans le binaire, autonomes mais plus volumineuses - Partagées : compilation avec
-fPIC, création avec-shared, code chargé au moment de l’exécution - Liez les deux avec
-Let-l; les bibliothèques partagées ont besoin d’un chemin de recherche à l’exécution, commeLD_LIBRARY_PATH
Vous disposez maintenant de toute la chaîne d’outils, du préprocesseur jusqu’à la compilation.
Questions Fréquemment Posées
La leçon « Bibliothèques statiques et partagées » est-elle gratuite ?
Oui — le texte complet de « Bibliothèques statiques et partagées » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Bibliothèques statiques et partagées » ?
Construisez et liez des bibliothèques Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C Academy ?
Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Bibliothèques statiques et partagées » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C Academy ?
Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Compilation conditionnelle
- Projets à plusieurs fichiers
- Makefiles
- Bibliothèques statiques et partagées