ar je archivační nástroj používaný ke kombinování objektů za účelem vytvoření archivního souboru s příponou .přípona, známá také jako knihovna.
V tomto článku se podíváme na to, jak vytvořit uživatelsky definovanou statickou knihovnu v programování C pomocí nástroje „ar“. Příklady ukazují, jak vytvořit, extrahovat a upravit archivy pomocí příkazu Linux ar.
Abychom demonstrovali vytvoření statické knihovny, vytvořme dva programy v jazyce C – sčítání.c a násobení.c
Pomocí gcc je získán objektový kód pro tyto programy az těchto dvou objektů je vytvořena statická knihovna libarith.a.
1. Vytvořte dva ukázkové programy C
Vytvořte program add.c, jak je ukázáno níže.
int addition(int a,int b) { int result; result = a + b; return result; }
Vytvořte program multiplication.c, jak je ukázáno níže.
int multiplication(int a, int b) { int result; result = a * b; return result; }
Před chvílí jsme diskutovali o základech psaní programu C na příkladu C hello world.
2. Zkompilujte programy a získejte objektové kódy
Použijte volbu -c ke kompilaci obou programů c. Použití volby -c vytvoří odpovídající .o soubory.
$ gcc -c addition.c $ gcc -c multiplication.c
Nyní aktuální pracovní adresář obsahuje soubory .c i .o, jak je uvedeno níže.
$ ls addition.c multiplication.c addition.o multiplication.o
3. Vytvořte statickou knihovnu programu C pomocí nástroje ar
Nyní vytvořte statickou knihovnu „libarith.a“ se souborem objektů sčítání a souborem objektů pro násobení následujícím způsobem,
$ ar cr libarith.a addition.o multiplication.o
4. Napište program C pro použití knihovny libarith.a
Soubor knihovny libarith.a je nyní připraven k použití. Následující příklad ukazuje, jak napsat ukázkový program C s hlavičkovým souborem pro použití statické knihovny libarith.a.
Vytvořte header.h :
#include <stdio.h> int addition(int a,int b); int multiplication(int a,int b);
Vytvořte example.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); }
Poznámka:Jak ladit program C pomocí gdb v 5 jednoduchých krocích poskytuje podrobné pokyny k ladění kódu C.
Kompilace example.c :
$ gcc -Wall example.c -L/home/guest/ -larith -o example
Volba -L dává kompilátoru pokyn, aby hledal soubory knihovny v adresáři /home/guest. Z tohoto adresáře překladač vezme soubor knihovny libarith, zkompiluje jej pomocí programu example.c.
Další metoda kompilace example.c :
$ gcc -Wall example.c libarith.a -o example
Spustit příklad spustitelného souboru :
$ ./example addition result is : 3 multiplication result is : 6
5. Zobrazení objektových souborů v archivu pomocí příkazu ar, volba t
Chcete-li zobrazit seznam souborů objektů dostupných v souboru libarith.a:
$ ar t libarith.a addition.o multiplication.o
Možnosti v příkazu ar jsou podobné příkazu tar.
6. Extrahujte soubory objektů z archivu pomocí příkazu ar, volba x
Soubory objektů dostupné v archivu můžete extrahovat následovně.
$ mkdir object $ cp libarith.a object/ $ cd object $ ar x libarith.a $ ls *.o addition.o multiplication.o
7. Přidejte objektový soubor do existujícího archivu pomocí ar, volba r
Předpokládejme, že jste vytvořili další objektový soubor s názvem subtraction.o
Následující příkaz rozšíří soubor knihovny libarith.a vložením objektu subtraction.o, jak je znázorněno níže.
$ ar r libarith.a subtraction.o $ ar t libarith.a addition.o multiplication.o subtraction.o
Při vkládání .o souboru již v archivu existuje, byl by nahrazen. Bez kontroly náhrad lze objekty přidat na konec archivu pomocí volby -q.
8. Smazat konkrétního člena archivu pomocí ar, možnost d
Chcete-li odstranit konkrétního člena archivu ze souboru knihovny, proveďte následující.
$ ar d libarith.a addition.o $ ar t libarith.a multiplication.o subtraction.o