ar est un outil d'archivage utilisé pour combiner des objets afin de créer un fichier d'archive avec l'extension .a, également appelée bibliothèque.
Dans cet article, discutons de la création d'une bibliothèque statique définie par l'utilisateur en programmation C à l'aide de l'utilitaire "ar". Les exemples montrent comment créer, extraire et modifier les archives à l'aide de la commande Linux ar.
Pour démontrer la création de la bibliothèque statique, créons deux programmes C - addition.c et multiplication.c
En utilisant gcc, le code objet de ces programmes est obtenu et la bibliothèque statique libarith.a est créée à partir de ces deux objets.
1. Créer deux exemples de programmes C
Créez le programme addition.c comme indiqué ci-dessous.
int addition(int a,int b) { int result; result = a + b; return result; }
Créez le programme multiplication.c comme indiqué ci-dessous.
int multiplication(int a, int b) { int result; result = a * b; return result; }
Il y a quelque temps, nous avons discuté des principes fondamentaux de l'écriture d'un programme C en utilisant l'exemple C hello world.
2. Compiler les programmes et obtenir les codes d'objet
Utilisez l'option -c pour compiler à la fois le programme c. L'utilisation de l'option -c créera les fichiers .o correspondants.
$ gcc -c addition.c $ gcc -c multiplication.c
Maintenant, le répertoire de travail actuel contient à la fois les fichiers .c et .o comme indiqué ci-dessous.
$ ls addition.c multiplication.c addition.o multiplication.o
3. Créez la bibliothèque statique du programme C à l'aide de l'utilitaire ar
Créez maintenant la bibliothèque statique "libarith.a" avec le fichier objet d'addition et le fichier objet de multiplication comme suit,
$ ar cr libarith.a addition.o multiplication.o
4. Écrire un programme C pour utiliser la bibliothèque libarith.a
Le fichier de bibliothèque libarith.a est maintenant prêt à être utilisé. L'exemple suivant indique comment écrire un exemple de programme C avec le fichier d'en-tête pour utiliser la bibliothèque statique libarith.a.
Créer header.h :
#include <stdio.h> int addition(int a,int b); int multiplication(int a,int b);
Créer exemple.c :
#include "header.h" int main() { int result; result = addition(1,2); printf("addition result is : %d\n",result); result = multiplication(3,2); printf("multiplication result is : %d\n",result); }
Remarque :Comment déboguer le programme C à l'aide de gdb en 5 étapes simples fournit des instructions étape par étape sur le débogage de votre code C.
Compiler exemple.c :
$ gcc -Wall example.c -L/home/guest/ -larith -o example
L'option -L indique au compilateur de rechercher dans le répertoire /home/guest les fichiers de bibliothèque. A partir de ce répertoire, le compilateur prend le fichier de bibliothèque libarith, le compile avec le programme example.c.
Une autre méthode pour compiler example.c :
$ gcc -Wall example.c libarith.a -o example
Exécuter l'exemple d'exécutable :
$ ./example addition result is : 3 multiplication result is : 6
5. Afficher les fichiers d'objets dans une archive à l'aide de la commande ar, option t
Pour lister les fichiers objets disponibles dans le libarith.a :
$ ar t libarith.a addition.o multiplication.o
Les options de la commande ar sont similaires à la commande tar.
6. Extraire des fichiers objets d'une archive à l'aide de la commande ar, option x
Vous pouvez extraire les fichiers objets disponibles dans une archive comme suit.
$ mkdir object $ cp libarith.a object/ $ cd object $ ar x libarith.a $ ls *.o addition.o multiplication.o
7. Ajouter un fichier objet dans l'archive existante à l'aide de ar, option r
Supposons que vous ayez créé un autre fichier objet appelé subtraction.o
La commande suivante étend le fichier de bibliothèque libarith.a, en insérant l'objet subtraction.o comme indiqué ci-dessous.
$ ar r libarith.a subtraction.o $ ar t libarith.a addition.o multiplication.o subtraction.o
Lors de l'insertion d'un fichier .o, s'il existe déjà dans l'archive, il serait remplacé. Sans vérifier les remplacements, les objets peuvent être ajoutés à la fin de l'archive en utilisant l'option -q.
8. Supprimer un membre d'archive spécifique à l'aide de ar, option d
Pour supprimer un membre d'archive spécifique du fichier de bibliothèque, procédez comme suit.
$ ar d libarith.a addition.o $ ar t libarith.a multiplication.o subtraction.o