0Pricing
C Academy · Leçon

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.o

Cré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 app

Compromis 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.o

Cré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 app

Trouver 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=. ./app

Compromis 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 .so profite à tous les programmes sans refaire l’édition de liens
  • Mais le programme ne démarre pas si le fichier .so est 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 app liste les bibliothèques partagées dont le chargeur aura besoin au moment de l’exécution
  • nm libmymath.a liste 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.a

Vé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 -L et -l ; les bibliothèques partagées ont besoin d’un chemin de recherche à l’exécution, comme LD_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

  1. Compilation conditionnelle
  2. Projets à plusieurs fichiers
  3. Makefiles
  4. Bibliothèques statiques et partagées
← Retour à C Academy