Ar (Unix)
Arhivatorul ( cunoscut și sub numele de ar ) este un utilitar Unix care menține grupuri de fișiere ca un singur fișier de arhivă. În general, ar este folosit pentru a crea și actualiza fișiere de bibliotecă care sunt utilizate de editorul de legături sau de linker ; cu toate acestea, poate fi folosit pentru a crea fișiere în orice alt scop. ar este inclus ca unul dintre GNU Binutils .
Crearea unei arhive
De exemplu, pentru a crea o arhivă din fișierele class1.o , class2.o , class3.o , ar fi folosită 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 se poate face:
- cc principal.c -L. -lclass
în loc de:
- cc main.c class1.o class2.o class3.o
Opțiunile -L și -l spun linkerului să caute biblioteca " libclass.a " în directorul curent.
Detalii format fișier
Formatul ar nu a fost niciodată standardizat, arhivele moderne 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, care au variat semnificativ față de formatul comun.
fișierele deb folosesc formatul comun.
Un fișier ar începe cu un antet global, urmat de un antet și secțiune de date pentru fiecare fișier stocat în fișierul ar.
Secțiunea de date este aliniată pe 2 octeți, dacă s-ar termina într-o perioadă impară, un „\n” este folosit ca umplutură.
Antet global
Antetul global este un singur câmp care conține șirul magic ASCII „!<arch>” urmat de un singur caracter de control LF
Antetul fișierului
Formatul comun este următorul.
| din pozitie | poziție sus | Numele domeniului | Format câmp |
|---|---|---|---|
| 0 | cincisprezece | nume de fișier | ASCII |
| 16 | 27 | Data dosarului | Zecimal |
| 28 | 33 | ID proprietar | Zecimal |
| 3. 4 | 39 | ID grup | Zecimal |
| 40 | 47 | modul fișier | octal |
| 48 | 57 | Dimensiunea fișierului în octeți | Zecimal |
| 58 | 59 | antet magic | '\n |
Datorită limitărilor de format și lungime a numelui de fișiere, atât versiunile GNU, cât și cele BSD au dezvoltat metode diferite de a obține nume de fișiere extinse.
Varianta BSD
BSD ar stochează nume de fișiere extinse plasând șirul „#1/” urmat de lungimea numelui fișierului în câmpul numelui fișierului și adăugând numele fișierului real la antetul fișierului.
Varianta GNU
GNU ar stochează mai multe nume de fișiere extinse în secțiunea de date a unui fișier cu numele „//”, această înregistrare este referită de anteturile viitoare. Un antet face referire la un nume de fișier extins prin stocarea unui „/” urmat de o poziție zecimală la începutul numelui de fișier în secțiunea de date cu numele de fișier extins.
GNU ar folosește un „/” pentru a marca sfârșitul numelui fișierului, acest lucru vă permite să utilizați spații fără a utiliza un nume de fișier extins.
GNU ar folosește numele de fișier special „/” pentru a marca că următoarea intrare conține un tabel de căutare a simbolurilor, care este folosit în bibliotecile ar pentru a accelera accesul
Vezi și
- .deb
- formate de fișiere
- UNIX
- Anexă: Lista de programe Unix
Link- uri externe
- ar(1) – Comenzi generale din manualul Ubuntu
- GNU binutils este o pagină de manual
- Unix Seventh Edition este o pagină de manual