AR(1) Instrumente pentru dezvoltare(programare) GNU AR(1) NUME ar - creeaza, modifica i extrage din arhive REZUMAT ar [-X32_64] [-]p[modificator] [--plugin nume] [--target nume-bfd] [--output nume-director] [--record-libdeps dependene-biblioteca] [--thin] [relpos] [numar] arhiva [membru...] DESCRIERE Programul GNU ar creeaza, modifica i extrage din arhive. O arhiva este un singur fiier care conine o colecie de alte fiiere intr-o structura care face posibila recuperarea fiierelor individuale originale (numite membri ai arhivei). Coninutul, modul (permisiunile), data i ora, proprietarul i grupul fiierelor originale sunt pastrate in arhiva i pot fi restaurate la extragere. GNU ar poate menine arhive ale caror membri au nume de orice lungime; cu toate acestea, in funcie de modul in care ar este configurat pe sistemul dumneavoastra, se poate impune o limita a lungimii numelor membrilor pentru compatibilitatea cu formatele de arhiva meninute cu alte instrumente. Daca exista, 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 conin subrutine necesare in mod obinuit. Deoarece bibliotecile vor depinde adesea de alte biblioteci, ar poate inregistra, de asemenea, dependenele unei biblioteci atunci cand este specificata opiunea --record-libdeps. ar creeaza un index al simbolurilor definite in modulele de obiecte realocabile din arhiva atunci cand se specifica modificatorul s. Odata creat, acest index este actualizat in arhiva ori de cate ori ar modifica coninutul acesteia (cu excepia operaiei de actualizare q). O arhiva cu un astfel de index accelereaza crearea de legaturi catre biblioteca i permite rutinelor din biblioteca sa se apeleze intre ele fara a ine cont de plasarea lor in arhiva. Putei utiliza nm -s sau nm --print-armap pentru a lista acest tabel de indici. In cazul in care o arhiva nu are acest tabel, se poate utiliza o alta forma de ar numita ranlib pentru a adauga doar tabelul. GNU ar poate crea opional o arhiva subire ,,thin", care conine un index de simboluri i referine la copiile originale ale fiierelor membre ale arhivei. Acest lucru este util pentru crearea de biblioteci pentru a fi utilizate in cadrul unui arbore de construcie local, in cazul in care se ateapta ca obiectele realocabile sa ramana disponibile, iar copierea coninutului fiecarui obiect nu ar face decat sa iroseasca timp i spaiu. O arhiva poate fi subire sau poate fi normala. Nu poate fi ambele in acelai timp. Odata creata o arhiva, formatul acesteia nu poate fi modificat fara a o terge mai intai i a crea apoi o noua arhiva in locul ei. Arhivele subiri sunt, de asemenea, compactate, astfel incat adaugarea unei arhive subiri la o alta arhiva subire nu o anideaza, aa cum s-ar intampla in cazul unei arhive normale. In schimb, elementele primei arhive sunt adaugate individual in cea de-a doua arhiva. Rutele catre elementele arhivei sunt stocate in raport cu arhiva insai. GNU ar este conceput pentru a fi compatibil cu doua facilitai diferite. Ii putei controla activitatea cu ajutorul opiunilor din linia de comanda, precum diferitele varietai de ar de pe sistemele Unix; sau, daca specificai opiunea unica -M din linia de comanda, il putei controla cu ajutorul unui script furnizat prin intrarea standard, precum programul <> al MRI. OPIUNI GNU ar va permite sa amestecai codul de operaie p i fanioanele modificatoare mod in orice ordine, in cadrul primului argument din linia de comanda. Daca dorii, putei incepe primul argument al liniei de comanda cu o liniua. Litera cheie p specifica ce operaie trebuie executata; poate fi oricare dintre urmatoarele, dar trebuie sa specificai numai una dintre ele: d terge module din arhiva. Specificai numele modulelor care urmeaza sa fie terse sub forma membru...; arhiva ramane neatinsa daca nu specificai niciun fiier de ters. Daca specificai modificatorul v, ar enumera fiecare modul pe masura ce este ters. m Utilizai aceasta operaie pentru a muta membri intr-o arhiva. Ordinea membrilor intr-o arhiva poate face o diferena in modul in care programele sunt legate folosind biblioteca, daca un simbol este definit in mai mult de un membru. Daca nu se utilizeaza modificatori cu ,,m", toi membrii pe care ii numii in argumentele membru sunt mutai la sfaritul arhivei; putei utiliza modificatorii a, b sau i pentru a-i muta intr-un loc specificat. p Imprima membrii specificai ai arhivei, in fiierul de ieire standard. Daca este specificat modificatorul v, afieaza numele membrului inainte de a copia coninutul acestuia la ieirea standard. Daca nu specificai niciun argument membru, se imprima toate fiierele din arhiva. q Adaugare rapida; Din punct de vedere istoric, adauga fiierele membru... la sfaritul arhivei, fara a verifica daca sunt inlocuite. Modificatorii a, b i i nu afecteaza aceasta operaie; noii membri sunt intotdeauna plasai la sfaritul arhivei. Modificatorul v face ca ar sa listeze fiecare fiier pe masura ce este adaugat. Deoarece scopul acestei operaii este viteza, implementarile lui ar au opiunea de a nu actualiza tabelul de simboluri al arhivei, daca exista unul. Cu toate acestea, prea multe sisteme diferite presupun ca tabelele de simboluri sunt intotdeauna actualizate, astfel incat GNU ar va reconstrui tabelul chiar i in cazul unei adaugari rapide. Nota - GNU ar trateaza comanda qs ca pe un sinonim pentru r - inlocuind fiierele deja existente in arhiva i adaugand altele noi la sfarit. r Insereaza fiierele membru... in arhiva (cu inlocuire). Aceasta operaie difera de q prin faptul ca toi membrii existeni anterior sunt teri daca numele lor se potrivesc cu cei care sunt adaugai. In cazul in care unul dintre fiierele numite in membru... nu exista, ar afieaza un mesaj de eroare i lasa neschimbate toate fiierele existente din arhiva care corespund acelui nume. In mod implicit, membrii noi sunt adaugai la sfaritul fiierului, dar putei utiliza unul dintre modificatorii a, b sau i pentru a solicita plasarea in raport cu un membru existent. Modificatorul v utilizat cu aceasta operaie genereaza o linie de ieire pentru fiecare fiier inserat, impreuna cu una dintre literele a sau r pentru a indica daca fiierul a fost adaugat (nu a fost ters niciun membru vechi) sau inlocuit. s Adauga un index la arhiva sau il actualizeaza daca exista deja. Reinei ca aceasta comanda este o excepie de la regula conform careia nu poate exista decat o singura litera de comanda, deoarece este posibil sa o utilizai atat ca o comanda, cat i ca un modificator. In ambele cazuri, aceasta face acelai lucru. t Afieaza un tabel care listeaza coninutul arhivei sau al fiierelor listate in membru... care sunt prezente in arhiva. In mod normal, se afieaza numai numele membrului, dar daca se specifica modificatorul O, se afieaza i poziia corespunzatoare a membrului. In cele din urma, pentru a vedea modurile (permisiuni), data i ora, proprietarul, grupul i dimensiunea, trebuie inclus modificatorul v. Daca nu specificai niciun argument membru, sunt listate toate fiierele din arhiva. Daca exista mai multe fiiere cu acelai nume (sa zicem, fig) intr-o arhiva (sa zicem b.a), ar t b.a fig listeaza numai prima instana; pentru a le vedea pe toate, trebuie sa cerei o lista completa - in exemplul nostru, ar t b.a. x Extrage membri (membrii numii) din arhiva. Putei utiliza modificatorul v cu aceasta operaie, pentru a solicita ca ar sa listeze fiecare nume pe masura ce il extrage. Daca nu specificai un membru, toate fiierele din arhiva sunt extrase. Fiierele nu pot fi extrase dintr-o arhiva subire i exista restricii privind extragerea din arhivele create cu P: Rutele nu trebuie sa fie absolute, nu pot conine ,,..", iar orice subdirectoare din rute trebuie sa existe. Daca se dorete evitarea acestor restricii, atunci se utilizeaza opiunea --output pentru a specifica un director de ieire. O serie de modificatori (mod) pot urma imediat dupa litera cheie p, pentru a specifica variaii ale comportamentului unei operaii: a Adauga fiiere noi dupa un membru existent al arhivei. Daca utilizai modificatorul a, numele unui membru existent al arhivei trebuie sa fie prezent ca argument relpos, inainte de specificaia arhiva. b Adauga fiiere noi inainte de un membru existent al arhivei. Daca utilizai modificatorul b, numele unui membru existent al arhivei trebuie sa fie prezent ca argument relpos, inainte de specificaia arhiva (la fel ca i). c \fICreeaza arhiva. Arhiva arhiva specificata este intotdeauna creata daca nu exista, atunci cand solicitai o actualizare. Dar se emite un avertisment daca nu specificai in prealabil ca va ateptai sa o creai, prin utilizarea acestui modificator. D Funcioneaza in modul determinist. La adaugarea fiierelor i a indexului arhivei, se utilizeaza zero pentru UID-uri, GID-uri, marcaje de timp i se utilizeaza moduri de fiier coerente pentru toate fiierele. Atunci cand se utilizeaza aceasta opiune, daca se utilizeaza ar cu opiuni identice i fiiere de intrare identice, execuiile multiple vor crea fiiere de ieire identice, indiferent de proprietarii, grupurile, modurile de fiier sau orele de modificare ale fiierelor de intrare. Daca binutils a fost configurat cu --enable-deterministic-archives, atunci acest mod este activat in mod implicit. Acesta poate fi dezactivat cu modificatorul U, de mai jos. f Trunchiaza numele din arhiva. In mod normal, GNU ar permite nume de fiiere de orice lungime. Acest lucru il va determina sa creeze arhive care nu sunt compatibile cu programul nativ ar pe unele sisteme. In cazul in care acest lucru reprezinta o problema, modificatorul f poate fi utilizat pentru a trunchia numele fiierelor atunci cand le introduce in arhiva. i Insereaza fiiere noi inainte de un membru existent al arhivei. Daca utilizai modificatorul i, numele unui membru existent al arhivei trebuie sa fie prezent ca argument relpos, inainte de specificaia arhiva (la fel ca b). l Specificai dependenele acestei biblioteci. Dependenele trebuie sa urmeze imediat dupa acest caracter de opiune, trebuie sa utilizeze aceeai sintaxa ca i linia de comanda a editorului de legaturi i trebuie sa fie specificate intr-un singur argument. De exemplu, L "-L/usr/local/lib -lmydep1 -lmydep2". N Utilizeaza parametrul numar. Acesta este utilizat in cazul in care exista mai multe intrari in arhiva cu acelai nume. Extrage sau terge din arhiva instana numar ale numelui dat. o Pastreaza datele originale ale membrilor la extragerea acestora. Daca nu specificai acest modificator, fiierele extrase din arhiva sunt inscripionate cu ora de extracie. O Afieaza poziiile membrilor in interiorul arhivei. Se utilizeaza impreuna cu opiunea t. P Utilizeaza numele complet al rutei atunci cand se potrivesc sau se stocheaza nume in arhiva. Arhivele create cu nume de rute complete nu sunt conforme cu POSIX i, prin urmare, este posibil sa nu funcioneze cu alte instrumente decat cele GNU actualizate. Modificarea unor astfel de arhive cu GNU ar fara a utiliza P va elimina numele complete ale rutelor, cu excepia cazului in care arhiva este o arhiva subire. Reinei ca P poate fi util atunci cand adaugai fiiere intr-o arhiva subire, deoarece r fara P ignora ruta atunci cand alege ce element sa inlocuiasca. Astfel, ar rcST arhiva.a subdir/fiier1 subdir/fiier2 fiier1 va avea ca rezultat inlocuirea primului ,,subdir/fiier1" cu ,,filier1" din directorul curent. Adaugarea lui P va impiedica aceasta inlocuire. s Scrie un index de fiier obiect in arhiva sau actualizeaza un index existent, chiar daca arhiva nu sufera nicio alta modificare. Putei utiliza acest indicator de modificare fie cu orice operaie, fie singur. Rularea ar s pe o arhiva este echivalenta cu rularea ranlib pe aceasta. S Nu genereaza un tabel de simboluri de arhiva. Acest lucru poate accelera construirea unei biblioteci mari in mai multe etape. Arhiva rezultata nu poate fi utilizata cu editorul de legaturi. Pentru a construi un tabel de simboluri, trebuie sa omitei modificatorul S la ultima execuie a ar sau trebuie sa executai ranlib pe arhiva. T Alias depreciat pentru --thin. T nu este recomandat deoarece in multe implementari de <> T are o semnificaie diferita, aa cum este specificat de X/Open System Interface. u In mod normal, ar r.... insereaza toate fiierele listate in arhiva. Daca dorii sa inserai doar acele fiiere din lista pe care o listai care sunt mai noi decat membrii existeni cu aceleai nume, utilizai acest modificator. Modificatorul u este permis numai pentru operaia r (reamplasare). In special, combinaia qu nu este permisa, deoarece verificarea marcajelor de timp ar pierde orice avantaj de viteza din operaia q. Nota - in cazul in care o arhiva a fost creata intr-o maniera determinista, de exemplu prin utilizarea modificatorului D, atunci inlocuirea va avea loc intotdeauna, iar modificatorul u va fi ineficient. U Nu funcioneaza in modul determinist. Acesta este inversul modificatorului D, de mai sus: fiierele adaugate i indexul arhivei vor primi valorile lor reale UID, GID, marca temporala i valorile modului de fiier. Aceasta este valoarea implicita, cu excepia cazului in care binutils a fost configurat cu --enable-deterministic-archives. v Acest modificator solicita versiunea detaliere a unei operaii. Multe operaii afieaza informaii suplimentare, cum ar fi numele fiierelor procesate, atunci cand se adauga modificatorul v. V Acest modificator arata numarul de versiune al ar. Programul ar accepta, de asemenea, unele opiuni din linia de comanda care nu sunt nici modificatori, nici aciuni, dar care ii modifica comportamentul in anumite moduri: --help Afieaza lista opiunilor liniei de comanda acceptate de ar i apoi iese. --version Afieaza informaiile despre versiunea lui ar i apoi iese. -X32_64 ar ignora o opiune iniiala ortografiata -X32_64, pentru compatibilitate cu AIX. Comportamentul produs de aceasta opiune este cel implicit pentru GNU ar. ar nu accepta niciuna dintre celelalte opiuni -X; in special, nu accepta -X32, care este valoarea implicita pentru AIX ar. --plugin nume Opiunea opionala din linia de comanda --plugin nume face ca ar sa incarce modulul numit nume, care adauga suport pentru mai multe formate de fiiere, inclusiv fiiere obiect cu informaii de optimizare a timpului de legatura. Aceasta opiune este disponibila numai in cazul in care lanul de instrumente a fost construit cu suportul pentru module activat. Daca --plugin nu este furnizata, dar suportul pentru module a fost activat, atunci ar parcurge fiierele din ${libdir}/bfd-plugins in ordine alfabetica i se utilizeaza primul modul care revendica obiectul in cauza. Va rugam sa reinei ca acest director de cautare de module nu este cel folosit de opiunea -plugin a ld. Pentru ca ar sa utilizeze modulul editorului de legaturi, acesta trebuie copiat in directorul ${libdir}/bfd-plugins. Pentru compilaiile bazate pe GCC, modulul editorului de legaturi se numete liblto_plugin.so.0.0.0.0. Pentru compilaiile bazate pe Clang, acesta se numete LLVMgold.so. Modulul GCC este intotdeauna compatibil cu versiunile anterioare, astfel incat este suficient sa se copieze doar cel mai nou. --target inta Opiunea opionala din linia de comanda --target nume-bfd specifica faptul ca membrii arhivei sunt intr-un format de cod obiect diferit de formatul implicit al sistemului dumneavoastra. A se vedea --output nume-director Opiunea --output poate fi utilizata pentru a specifica o ruta catre un director in care sa fie extrai membrii arhivei. Daca aceasta opiune nu este specificata, se va utiliza directorul curent. Nota - dei prezena acestei opiuni implica o operaie de extracie x, opiunea trebuie totui inclusa in linia de comanda. --record-libdeps dependene-biblioteca Opiunea --record-libdeps este identica modificatorului l, doar ca este tratata in forma lunga. --thin Transforma arhiva specificata intr-o arhiva subire. Daca exista deja i este o arhiva obinuita, membrii existeni trebuie sa fie prezeni in acelai director ca arhiva. @fiier Citete opiunile liniei de comanda din fiier. Opiunile citite sunt inserate in locul opiunii originale @fiier. Daca fiier nu exista sau nu poate fi citit, atunci opiunea va fi tratata literal i nu va fi eliminata. Opiunile din fiier sunt separate prin spaii albe. Un caracter de spaiere poate fi inclus intr-o opiune prin includerea intregii opiuni intre ghilimele simple sau duble. Orice caracter (inclusiv o bara oblica inversa) poate fi inclus prin prefixarea caracterului care urmeaza sa fie inclus cu o bara oblica inversa. fiier poate conine la randul sau opiuni @fiier suplimentare; orice astfel de opiuni vor fi procesate in mod recursiv. CONSULTAI I nm(1), ranlib(1), and the Info entries for binutils. DREPTURI DE AUTOR Drepturi de autor (C) 1991-2024 Free Software Foundation, Inc. Se acorda permisiunea de a copia, distribui i/sau modifica acest document in conformitate cu termenii Licenei GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioara publicata de Free Software Foundation; fara seciuni invariante, fara texte de coperta i fara texte de contra coperta. O copie a licenei este inclusa in seciunea intitulata ,,GNU Free Documentation License". TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . binutils-2.42.0 1 februarie 2024 AR(1)