Bibliotheques statique
- /
- Le blog — Compétences & méthodes /
- Bibliotheques statique
- Michael
- C , Headers , Shell , Programmation
- 22 octobre 2025
Sommaire
Comment créer et utilisé une bibliothèque statique ?
Une bibliothèque statique c’est quoi ?
Une bibliothèque statique c’est une archive (.a) qui regroupe plusieurs objets (.o).
Le code de cette archive est copié au moment de l’édition des liens.
C’est quoi l’édition des liens ?
L’édition de liens est l’étape où le linker assemble les fichiers objets (.o) et résout les références aux symboles des bibliothèques pour créer l’exécutable final.
Nous utilisons des options lors de la commande de compilation qui sont :
-L<chemin_de_larchive> et -l<nom>
Imaginons que nous avons un fichier libexemple.a
cc -Wall -Wextra -Werror fichier.c -L. -lexemple
Cette commande on peux la découper en 3 partie.
cc -Wall -Wextra -Werror fichier.c: Commande classique pour compiler avec les flags-L.: Permet d’ajouter le dossier courant a la liste des dossiers ou le linker ira chercher les bibliothèques, le " . " est important car c’est le chemin du dossier courant.-lexemple: Cette option ajoute la bibliothèque a la liste des libs a trouver et a utiliser (lib est sous entendu, libexemple deviens lexemple).
Le convention de nommage veux que tout .a commence par “lib”.
Cela permet au linker de trouver la lib avec la commande si dessus.
Voici une solution pour que cela fonctionne sans que le fichier commence par “lib” :
# Fichier exemple.a
cc -Wall -Wextra -Werror fichier.c -L. -l:exemple.a
Cependant, la première solution reste la plus lisible.
Création d’une bibliothèque statique
Pour crée une bibliothèque statique il faut vos fonctions dans un ou plusieurs fichiers .c
Ensuite vous devez compiler le/les fichier(s) obtenir les fichiers objets.
cc -Wall -Wextra -Werror -c fichier.c
Cette commande vas me donner un fichier .o, c’est grâce a ce fichier que je vais crée mon archive.
Pour crée l’archive .a il existe 2 façons de faire.
ar rc libexemple.a fichier.o
ranlib libexemple.a
ar rcs libexemple.a fichier.o
Ces deux méthodes sont équivalentes, la première reste plus portable sur des systèmes où ar ne gère pas l’option s.
Explications :
| Arguments | Definitions |
|---|---|
| AR | Archive |
| RCS | Options : r = Replace; c = Create; s = ecrit/actualise |
| RANLIB | Écrit l’index des symboles dans l’archive. Garantit la compatibilité la ou ar ne supporte pas le -s. |
R = Ajoute ou remplace les fichiers .o (remplace si les fichiers existent déjà).
C = Crée l’archive si elle existe pas et supprime l’avertissement de création.
S = Écrit ou actualise la table d’index des symboles a l’intérieur de l’archive pour que le linker puisse trouver vite les symboles.
Commandes utiles avec AR :
ar t libexemple.a # t = Lister le contenue de la lib
ar x libexemple.a fichier.o # x = Extraire un membre de la lib
ar d libexemple.a fichier.o # d = Supprimer un membre de la lib
Sources :
Pierre Gradot
GeeksforGeeks
man ar