ar ist ein Archivierungswerkzeug, das zum Kombinieren von Objekten verwendet wird, um eine Archivdatei mit der Erweiterung .a zu erstellen, die auch als Bibliothek bekannt ist.
Lassen Sie uns in diesem Artikel diskutieren, wie Sie eine benutzerdefinierte statische Bibliothek in der C-Programmierung mit dem Dienstprogramm „ar“ erstellen. Die Beispiele zeigen, wie die Archive mit dem Linux-Befehl ar erstellt, extrahiert und geändert werden.
Um die Erstellung statischer Bibliotheken zu demonstrieren, lassen Sie uns zwei C-Programme erstellen — addition.c und multiplication.c
Mit gcc wird der Objektcode für diese Programme abgerufen und die statische Bibliothek libarith.a wird aus diesen beiden Objekten erstellt.
1. Erstellen Sie zwei Beispiel-C-Programme
Erstellen Sie das Programm addition.c wie unten gezeigt.
int addition(int a,int b) { int result; result = a + b; return result; }
Erstellen Sie das Programm multiplication.c wie unten gezeigt.
int multiplication(int a, int b) { int result; result = a * b; return result; }
Vor einiger Zeit haben wir über die Grundlagen des Schreibens von C-Programmen anhand des C-Hello-World-Beispiels diskutiert.
2. Kompilieren Sie die Programme und erhalten Sie Objektcodes
Verwenden Sie die Option -c, um sowohl das C-Programm zu kompilieren. Mit der Option -c werden die entsprechenden .o-Dateien erstellt.
$ gcc -c addition.c $ gcc -c multiplication.c
Jetzt enthält das aktuelle Arbeitsverzeichnis sowohl die .c- als auch die .o-Datei, wie unten gezeigt.
$ ls addition.c multiplication.c addition.o multiplication.o
3. Erstellen Sie die statische C-Programmbibliothek mit einem Dienstprogramm
Erstellen Sie nun die statische Bibliothek „libarith.a“ mit der Addition Objektdatei und Multiplikation Objektdatei wie folgt,
$ ar cr libarith.a addition.o multiplication.o
4. Schreiben Sie ein C-Programm zur Verwendung der Bibliothek libarith.a
Die Bibliotheksdatei libarith.a ist nun einsatzbereit. Das folgende Beispiel zeigt, wie ein Beispiel-C-Programm mit der Header-Datei geschrieben wird, um die statische Bibliothek libarith.a zu verwenden.
Header.h erstellen:
#include <stdio.h> int addition(int a,int b); int multiplication(int a,int b);
Beispiel.c erstellen:
#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); }
Hinweis:Wie man ein C-Programm mit gdb in 5 einfachen Schritten debuggt, bietet eine Schritt-für-Schritt-Anleitung zum Debuggen Ihres C-Codes.
Kompilieren Sie example.c :
$ gcc -Wall example.c -L/home/guest/ -larith -o example
Die Option -L weist den Compiler an, im Verzeichnis /home/guest nach Bibliotheksdateien zu suchen. Aus diesem Verzeichnis nimmt der Compiler die Libarith-Bibliotheksdatei und kompiliert sie mit dem Programm example.c.
Eine andere Methode zum Kompilieren von example.c :
$ gcc -Wall example.c libarith.a -o example
Beispiel ausführbare Datei ausführen:
$ ./example addition result is : 3 multiplication result is : 6
5. Anzeigen von Objektdateien in einem Archiv mit ar-Befehl, Option t
Um die in libarith.a verfügbaren Objektdateien aufzulisten:
$ ar t libarith.a addition.o multiplication.o
Die Optionen im ar-Befehl ähneln denen des tar-Befehls.
6. Extrahieren Sie Objektdateien aus einem Archiv mit dem ar-Befehl, Option x
Sie können die in einem Archiv verfügbaren Objektdateien wie folgt extrahieren.
$ mkdir object $ cp libarith.a object/ $ cd object $ ar x libarith.a $ ls *.o addition.o multiplication.o
7. Hinzufügen einer Objektdatei zum bestehenden Archiv mit ar, Option r
Nehmen wir an, Sie haben eine weitere Objektdatei namens subtraction.o
erstelltDer folgende Befehl erweitert die Bibliotheksdatei libarith.a, indem er das Objekt subtraction.o wie unten gezeigt einfügt.
$ ar r libarith.a subtraction.o $ ar t libarith.a addition.o multiplication.o subtraction.o
Beim Einfügen einer .o-Datei, die bereits im Archiv vorhanden ist, wird sie ersetzt. Ohne auf Ersetzungen zu prüfen, können die Objekte mit der Option -q am Ende des Archivs hinzugefügt werden.
8. Löschen Sie ein bestimmtes Archivelement mit ar, Option d
Um ein bestimmtes Archivelement aus der Bibliotheksdatei zu löschen, gehen Sie wie folgt vor.
$ ar d libarith.a addition.o $ ar t libarith.a multiplication.o subtraction.o