Scroll to navigation

AR(1) Instrumente pentru dezvoltare(programare) GNU AR(1)

NUME

ar - creează, modifică și extrage din arhive

REZUMAT

ar [-X32_64] [-]p[modificator] [--plugin nume] [--target nume-bfd] [--output nume-director] [--record-libdeps dependențe-bibliotecă] [--thin] [relpos] [număr] arhivă [membru...]

DESCRIERE

Programul GNU ar creează, modifică și extrage din arhive. O arhivă este un singur fișier care conține o colecție de alte fișiere într-o structură care face posibilă recuperarea fișierelor individuale originale (numite membri ai arhivei).

Conținutul, modul (permisiunile), data și ora, proprietarul și grupul fișierelor originale sunt păstrate în arhivă și pot fi restaurate la extragere.

GNU ar poate menține arhive ale căror membri au nume de orice lungime; cu toate acestea, în funcție de modul în care ar este configurat pe sistemul dumneavoastră, se poate impune o limită a lungimii numelor membrilor pentru compatibilitatea cu formatele de arhivă menținute cu alte instrumente. Dacă există, limita este adesea de 15 caractere (tipic pentru formatele legate de a.out) sau de 16 caractere (tipic pentru formatele legate de coff).

ar este considerat un utilitar binar deoarece arhivele de acest tip sunt cel mai adesea folosite ca biblioteci care conțin subrutine necesare în mod obișnuit. Deoarece bibliotecile vor depinde adesea de alte biblioteci, ar poate înregistra, de asemenea, dependențele unei biblioteci atunci când este specificată opțiunea --record-libdeps.

ar creează un index al simbolurilor definite în modulele de obiecte realocabile din arhivă atunci când se specifică modificatorul s. Odată creat, acest index este actualizat în arhivă ori de câte ori ar modifică conținutul acesteia (cu excepția operației de actualizare q). O arhivă cu un astfel de index accelerează crearea de legături către bibliotecă și permite rutinelor din bibliotecă să se apeleze între ele fără a ține cont de plasarea lor în arhivă.

Puteți utiliza nm -s sau nm --print-armap pentru a lista acest tabel de indici. În cazul în care o arhivă nu are acest tabel, se poate utiliza o altă formă de ar numită ranlib pentru a adăuga doar tabelul.

GNU ar poate crea opțional o arhivă subțire „thin”, care conține un index de simboluri și referințe la copiile originale ale fișierelor membre ale arhivei. Acest lucru este util pentru crearea de biblioteci pentru a fi utilizate în cadrul unui arbore de construcție local, în cazul în care se așteaptă ca obiectele realocabile să rămână disponibile, iar copierea conținutului fiecărui obiect nu ar face decât să irosească timp și spațiu.

O arhivă poate fi subțire sau poate fi normală. Nu poate fi ambele în același timp. Odată creată o arhivă, formatul acesteia nu poate fi modificat fără a o șterge mai întâi și a crea apoi o nouă arhivă în locul ei.

Arhivele subțiri sunt, de asemenea, compactate, astfel încât adăugarea unei arhive subțiri la o altă arhivă subțire nu o anidează, așa cum s-ar întâmpla în cazul unei arhive normale. În schimb, elementele primei arhive sunt adăugate individual în cea de-a doua arhivă.

Rutele către elementele arhivei sunt stocate în raport cu arhiva însăși.

GNU ar este conceput pentru a fi compatibil cu două facilități diferite. Îi puteți controla activitatea cu ajutorul opțiunilor din linia de comandă, precum diferitele varietăți de ar de pe sistemele Unix; sau, dacă specificați opțiunea unică -M din linia de comandă, îl puteți controla cu ajutorul unui script furnizat prin intrarea standard, precum programul «librarian» al MRI.

OPȚIUNI

GNU ar vă permite să amestecați codul de operație p și fanioanele modificatoare mod în orice ordine, în cadrul primului argument din linia de comandă.

Dacă doriți, puteți începe primul argument al liniei de comandă cu o liniuță.

Litera cheie p specifică ce operație trebuie executată; poate fi oricare dintre următoarele, dar trebuie să specificați numai una dintre ele:

Șterge module din arhivă. Specificați numele modulelor care urmează să fie șterse sub forma membru...; arhiva rămâne neatinsă dacă nu specificați niciun fișier de șters.

Dacă specificați modificatorul v, ar enumeră fiecare modul pe măsură ce este șters.

Utilizați această operație pentru a muta membri într-o arhivă.

Ordinea membrilor într-o arhivă poate face o diferență în modul în care programele sunt legate folosind biblioteca, dacă un simbol este definit în mai mult de un membru.

Dacă nu se utilizează modificatori cu „m”, toți membrii pe care îi numiți în argumentele membru sunt mutați la sfârșitul arhivei; puteți utiliza modificatorii a, b sau i pentru a-i muta într-un loc specificat.

Imprimă membrii specificați ai arhivei, în fișierul de ieșire standard. Dacă este specificat modificatorul v, afișează numele membrului înainte de a copia conținutul acestuia la ieșirea standard.

Dacă nu specificați niciun argument membru, se imprimă toate fișierele din arhivă.

Adăugare rapidă; Din punct de vedere istoric, adaugă fișierele membru... la sfârșitul arhivei, fără a verifica dacă sunt înlocuite.

Modificatorii a, b și i nu afectează această operație; noii membri sunt întotdeauna plasați la sfârșitul arhivei.

Modificatorul v face ca ar să listeze fiecare fișier pe măsură ce este adăugat.

Deoarece scopul acestei operații este viteza, implementările lui ar au opțiunea de a nu actualiza tabelul de simboluri al arhivei, dacă există unul. Cu toate acestea, prea multe sisteme diferite presupun că tabelele de simboluri sunt întotdeauna actualizate, astfel încât GNU ar va reconstrui tabelul chiar și în cazul unei adăugări rapide.

Notă - GNU ar tratează comanda qs ca pe un sinonim pentru r - înlocuind fișierele deja existente în arhivă și adăugând altele noi la sfârșit.

Inserează fișierele membru... în arhivă (cu înlocuire). Această operație diferă de q prin faptul că toți membrii existenți anterior sunt șterși dacă numele lor se potrivesc cu cei care sunt adăugați.

În cazul în care unul dintre fișierele numite în membru... nu există, ar afișează un mesaj de eroare și lasă neschimbate toate fișierele existente din arhivă care corespund acelui nume.

În mod implicit, membrii noi sunt adăugați la sfârșitul fișierului, dar puteți utiliza unul dintre modificatorii a, b sau i pentru a solicita plasarea în raport cu un membru existent.

Modificatorul v utilizat cu această operație generează o linie de ieșire pentru fiecare fișier inserat, împreună cu una dintre literele a sau r pentru a indica dacă fișierul a fost adăugat (nu a fost șters niciun membru vechi) sau înlocuit.

Adaugă un index la arhivă sau îl actualizează dacă există deja. Rețineți că această comandă este o excepție de la regula conform căreia nu poate exista decât o singură literă de comandă, deoarece este posibil să o utilizați atât ca o comandă, cât și ca un modificator. În ambele cazuri, aceasta face același lucru.
Afișează un tabel care listează conținutul arhivei sau al fișierelor listate în membru... care sunt prezente în arhivă. În mod normal, se afișează numai numele membrului, dar dacă se specifică modificatorul O, se afișează și poziția corespunzătoare a membrului. În cele din urmă, pentru a vedea modurile (permisiuni), data și ora, proprietarul, grupul și dimensiunea, trebuie inclus modificatorul v.

Dacă nu specificați niciun argument membru, sunt listate toate fișierele din arhivă.

Dacă există mai multe fișiere cu același nume (să zicem, fig) într-o arhivă (să zicem b.a), ar t b.a fig listează numai prima instanță; pentru a le vedea pe toate, trebuie să cereți o listă completă - în exemplul nostru, ar t b.a.

Extrage membri (membrii numiți) din arhivă. Puteți utiliza modificatorul v cu această operație, pentru a solicita ca ar să listeze fiecare nume pe măsură ce îl extrage.

Dacă nu specificați un membru, toate fișierele din arhivă sunt extrase.

Fișierele nu pot fi extrase dintr-o arhivă subțire și există restricții privind extragerea din arhivele create cu P: Rutele nu trebuie să fie absolute, nu pot conține „..”, iar orice subdirectoare din rute trebuie să existe. Dacă se dorește evitarea acestor restricții, atunci se utilizează opțiunea --output pentru a specifica un director de ieșire.

O serie de modificatori (mod) pot urma imediat după litera cheie p, pentru a specifica variații ale comportamentului unei operații:

Adaugă fișiere noi după un membru existent al arhivei. Dacă utilizați modificatorul a, numele unui membru existent al arhivei trebuie să fie prezent ca argument relpos, înainte de specificația arhivă.
Adaugă fișiere noi înainte de un membru existent al arhivei. Dacă utilizați modificatorul b, numele unui membru existent al arhivei trebuie să fie prezent ca argument relpos, înainte de specificația arhivă (la fel ca i).
\fICreează arhiva. Arhiva arhivă specificată este întotdeauna creată dacă nu exista, atunci când solicitați o actualizare. Dar se emite un avertisment dacă nu specificați în prealabil că vă așteptați să o creați, prin utilizarea acestui modificator.
Funcționează în modul determinist. La adăugarea fișierelor și a indexului arhivei, se utilizează zero pentru UID-uri, GID-uri, marcaje de timp și se utilizează moduri de fișier coerente pentru toate fișierele. Atunci când se utilizează această opțiune, dacă se utilizează ar cu opțiuni identice și fișiere de intrare identice, execuțiile multiple vor crea fișiere de ieșire identice, indiferent de proprietarii, grupurile, modurile de fișier sau orele de modificare ale fișierelor de intrare.

Dacă binutils a fost configurat cu --enable-deterministic-archives, atunci acest mod este activat în mod implicit. Acesta poate fi dezactivat cu modificatorul U, de mai jos.

Trunchiază numele din arhivă. În mod normal, GNU ar permite nume de fișiere de orice lungime. Acest lucru îl va determina să creeze arhive care nu sunt compatibile cu programul nativ ar pe unele sisteme. În cazul în care acest lucru reprezintă o problemă, modificatorul f poate fi utilizat pentru a trunchia numele fișierelor atunci când le introduce în arhivă.
Inserează fișiere noi înainte de un membru existent al arhivei. Dacă utilizați modificatorul i, numele unui membru existent al arhivei trebuie să fie prezent ca argument relpos, înainte de specificația arhivă (la fel ca b).
Specificați dependențele acestei biblioteci. Dependențele trebuie să urmeze imediat după acest caracter de opțiune, trebuie să utilizeze aceeași sintaxă ca și linia de comandă a editorului de legături și trebuie să fie specificate într-un singur argument. De exemplu, L "-L/usr/local/lib -lmydep1 -lmydep2".
Utilizează parametrul număr. Acesta este utilizat în cazul în care există mai multe intrări în arhivă cu același nume. Extrage sau șterge din arhivă instanța număr ale numelui dat.
Păstrează datele originale ale membrilor la extragerea acestora. Dacă nu specificați acest modificator, fișierele extrase din arhivă sunt inscripționate cu ora de extracție.
Afișează pozițiile membrilor în interiorul arhivei. Se utilizează împreună cu opțiunea t.
Utilizează numele complet al rutei atunci când se potrivesc sau se stochează nume în arhivă. Arhivele create cu nume de rute complete nu sunt conforme cu POSIX și, prin urmare, este posibil să nu funcționeze cu alte instrumente decât cele GNU actualizate. Modificarea unor astfel de arhive cu GNU ar fără a utiliza P va elimina numele complete ale rutelor, cu excepția cazului în care arhiva este o arhivă subțire. Rețineți că P poate fi util atunci când adăugați fișiere într-o arhivă subțire, deoarece r fără P ignoră ruta atunci când alege ce element să înlocuiască. Astfel,

 ar rcST arhiva.a subdir/fișier1 subdir/fișier2 fișier1
    

va avea ca rezultat înlocuirea primului „subdir/fișier1” cu „filșier1” din directorul curent. Adăugarea lui P va împiedica această înlocuire.

Scrie un index de fișier obiect în arhivă sau actualizează un index existent, chiar dacă arhiva nu suferă nicio altă modificare. Puteți utiliza acest indicator de modificare fie cu orice operație, fie singur. Rularea ar s pe o arhivă este echivalentă cu rularea ranlib pe aceasta.
Nu generează un tabel de simboluri de arhivă. Acest lucru poate accelera construirea unei biblioteci mari în mai multe etape. Arhiva rezultată nu poate fi utilizată cu editorul de legături. Pentru a construi un tabel de simboluri, trebuie să omiteți modificatorul S la ultima execuție a ar sau trebuie să executați ranlib pe arhivă.
Alias depreciat pentru --thin. T nu este recomandat deoarece în multe implementări de «ar» T are o semnificație diferită, așa cum este specificat de X/Open System Interface.
În mod normal, ar r.... inserează toate fișierele listate în arhivă. Dacă doriți să inserați doar acele fișiere din lista pe care o listați care sunt mai noi decât membrii existenți cu aceleași nume, utilizați acest modificator. Modificatorul u este permis numai pentru operația r (reamplasare). În special, combinația qu nu este permisă, deoarece verificarea marcajelor de timp ar pierde orice avantaj de viteză din operația q.

Notă - în cazul în care o arhivă a fost creată într-o manieră deterministă, de exemplu prin utilizarea modificatorului D, atunci înlocuirea va avea loc întotdeauna, iar modificatorul u va fi ineficient.

Nu funcționează în modul determinist. Acesta este inversul modificatorului D, de mai sus: fișierele adăugate și indexul arhivei vor primi valorile lor reale UID, GID, marca temporală și valorile modului de fișier.

Aceasta este valoarea implicită, cu excepția cazului în care binutils a fost configurat cu --enable-deterministic-archives.

Acest modificator solicită versiunea detaliere a unei operații. Multe operații afișează informații suplimentare, cum ar fi numele fișierelor procesate, atunci când se adaugă modificatorul v.
Acest modificator arată numărul de versiune al ar.

Programul ar acceptă, de asemenea, unele opțiuni din linia de comandă care nu sunt nici modificatori, nici acțiuni, dar care îi modifică comportamentul în anumite moduri:

Afișează lista opțiunilor liniei de comandă acceptate de ar și apoi iese.
Afișează informațiile despre versiunea lui ar și apoi iese.
ar ignoră o opțiune inițială ortografiată -X32_64, pentru compatibilitate cu AIX. Comportamentul produs de această opțiune este cel implicit pentru GNU ar. ar nu acceptă niciuna dintre celelalte opțiuni -X; în special, nu acceptă -X32, care este valoarea implicită pentru AIX ar.
Opțiunea opțională din linia de comandă --plugin nume face ca ar să încarce modulul numit nume, care adaugă suport pentru mai multe formate de fișiere, inclusiv fișiere obiect cu informații de optimizare a timpului de legătură.

Această opțiune este disponibilă numai în cazul în care lanțul de instrumente a fost construit cu suportul pentru module activat.

Dacă --plugin nu este furnizată, dar suportul pentru module a fost activat, atunci ar parcurge fișierele din ${libdir}/bfd-plugins în ordine alfabetică și se utilizează primul modul care revendică obiectul în cauză.

Vă rugăm să rețineți că acest director de căutare de module nu este cel folosit de opțiunea -plugin a ld. Pentru ca ar să utilizeze modulul editorului de legături, acesta trebuie copiat în directorul ${libdir}/bfd-plugins. Pentru compilațiile bazate pe GCC, modulul editorului de legături se numește liblto_plugin.so.0.0.0.0. Pentru compilațiile bazate pe Clang, acesta se numește LLVMgold.so. Modulul GCC este întotdeauna compatibil cu versiunile anterioare, astfel încât este suficient să se copieze doar cel mai nou.

Opțiunea opțională din linia de comandă --target nume-bfd specifică faptul că membrii arhivei sunt într-un format de cod obiect diferit de formatul implicit al sistemului dumneavoastră. A se vedea
Opțiunea --output poate fi utilizată pentru a specifica o rută către un director în care să fie extrași membrii arhivei. Dacă această opțiune nu este specificată, se va utiliza directorul curent.

Notă - deși prezența acestei opțiuni implică o operație de extracție x, opțiunea trebuie totuși inclusă în linia de comandă.

Opțiunea --record-libdeps este identică modificatorului l, doar că este tratată în forma lungă.
Transformă arhiva specificată într-o arhivă subțire. Dacă există deja și este o arhivă obișnuită, membrii existenți trebuie să fie prezenți în același director ca arhiva.
@fișier
Citește opțiunile liniei de comandă din fișier. Opțiunile citite sunt inserate în locul opțiunii originale @fișier. Dacă fișier nu există sau nu poate fi citit, atunci opțiunea va fi tratată literal și nu va fi eliminată.

Opțiunile din fișier sunt separate prin spații albe. Un caracter de spațiere poate fi inclus într-o opțiune prin includerea întregii opțiuni între ghilimele simple sau duble. Orice caracter (inclusiv o bară oblică inversă) poate fi inclus prin prefixarea caracterului care urmează să fie inclus cu o bară oblică inversă. fișier poate conține la rândul său opțiuni @fișier suplimentare; orice astfel de opțiuni vor fi procesate în mod recursiv.

CONSULTAȚI ȘI

nm(1), ranlib(1), and the Info entries for binutils.

DREPTURI DE AUTOR

Drepturi de autor © 1991-2024 Free Software Foundation, Inc.

Se acordă permisiunea de a copia, distribui și/sau modifica acest document în conformitate cu termenii Licenței GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară publicată de Free Software Foundation; fără secțiuni invariante, fără texte de copertă și fără texte de contra copertă. O copie a licenței este inclusă în secțiunea intitulată „GNU Free Documentation License”.

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

21 februarie 2024 binutils-2.42