| AR(1) | Instrumente pentru dezvoltare(programare) GNU | AR(1) |
ar - creează, modifică și extrage din arhive
ar [-X32_64] [-]p[modificator] [--plugin nume] [--target nume-bfd] [--output nume-director] [--record-libdeps dependențe-bibliotecă] [--thin] [relpos] [număr] arhivă [membru...]
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.
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:
Dacă specificați modificatorul v, ar enumeră fiecare modul pe măsură ce este șters.
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.
Dacă nu specificați niciun argument membru, se imprimă toate fișierele din arhivă.
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.
Î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.
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.
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:
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.
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.
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.
Aceasta este valoarea implicită, cu excepția cazului în care binutils a fost configurat cu --enable-deterministic-archives.
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:
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.
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ț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.
Drepturi de autor © 1991-2025 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”.
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.
| 3 martie 2025 | binutils-2.44 |