ar (Unix)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Arhivatorul (cunoscut și sub numele de ar ) este un instrument Unix care menține grupuri de fișiere ca un singur fișier de arhivă. În prezent, ar este de obicei utilizat pentru a crea și actualiza numai fișiere de bibliotecă pe care linkerul le folosește. Ele pot fi folosite pentru a crea tot felul de arhive, dar au fost în general înlocuite cu formatul de fișier tar pentru scopuri care nu depășesc legătura dintre biblioteci. ar este inclus ca unul dintre GNU Binutils .

Exemple

De exemplu, pentru a crea o arhivă din fișierele class1.o , class2.o , class3.o , trebuie să utilizați următoarea comandă:

 ar rcs libclass.a class1.o class2.o class3.o

pentru a compila un program care depinde de class1.o , class2.o și class3.o puteți face:

 cc main.c -L. -clasa

in loc de:

 cc main.c class1.o class2.o class3.o 

-L și -l parametru instruiește linker - ul să caute „libclass.a“ bibliotecă în directorul curent.

Detalii despre formatul fișierului

Formatul ar nu a fost niciodată standardizat, arhivele recente se bazează pe un format comun cu două variante cunoscute, BSD și GNU .

Din punct de vedere istoric, au existat și alte variante, inclusiv AIX (mic), AIX (mare) și Coerent, acestea variază semnificativ de la formatul comun.

Arhivele Deb folosesc formatul comun.

Un fișier ar începe cu un antet global, urmat de un antet și o secțiune de date pentru fiecare fișier stocat în fișierul ar.

Secțiunea de date este aliniată pe 2 octeți, dacă se termină cu un format ciudat, este completată cu un „\ n”.

Antet global

Antetul global este un singur câmp care conține șirul ASCII "! <arch>" urmat de un singur caracter de control LF .

Antetul fișierului

Formatul comun este următorul.

Offset de câmp de la Compensare câmp la Numele domeniului Format câmp
0 15 Nume de fișier ASCII
16 27 Data fișierului Zecimal
28 33 ID-ul proprietarului Zecimal
34 39 ID grup Zecimal
40 47 Mod fișier Octal
48 57 Dimensiunea fișierului în octeți Zecimal
58 59 Magia antetului '\ n

Datorită limitărilor privind lungimea și formatul fișierului, atât variantele GNU, cât și variantele BSD folosesc metode diferite pentru a ajunge la nume de fișiere extinse.

Varianta BSD

BSD ars stochează nume de fișiere extinse plasând șirul „# 1 /” urmat de lungimea numelui de fișier în câmpul nume de fișier și adaugă numele de fișier real la antetul fișierului.

Varianta GNU

GNU ars stochează mai multe nume de fișiere extinse în secțiunea de date cu numele „//”, această înregistrare se referă la antetele ulterioare. Un antet face referire la un nume extins de fișier stocând un „/” urmat de o decalare zecimală la începutul numelui fișierului în secțiunea de date a fișierului extins.

GNU ar folosește un „/” pentru a marca sfârșitul unui nume de fișier, aceasta permite utilizarea spațiilor fără utilizarea unui nume de fișier extins.

GNU ar folosește numele de fișier special "/" pentru a arăta că următoarele informații de date conțin un tabel de căutare a simbolurilor, care este utilizat în bibliotecile ar pentru a accelera accesul.

Elemente conexe

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT