ar (Unix)
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
- Pagină manuală pentru GNU binutils ar , la unixhelp.ed.ac.uk . Adus la 22 aprilie 2006 (arhivat din original la 3 februarie 2006) .
- Pagină manuală pentru ar Unix Seventh Edition , la freebsd.org .