| AR(1) | Strumenti di sviluppo GNU | AR(1) |
ar - crea, modifica ed estrae da archivi
ar [-X32_64] [-]p[mod] [--plugin name] [--target bfdname] [--output dirname] [--record-libdeps libdeps] [--thin] [relpos] [count] archivio [membro...]
Il programma ar crea, modifica ed estrae da archivi. Un archivio è un singolo file contenente una collezione di altri file in una struttura che rende possibile ritrovare i singoli file originari (chiamati membri dell'archivio).
Il contenuto originale dei file, i modi (permessi), data e ora, il proprietario e il gruppo sono preservati nell'archivio, e possono essere ripristinati all'estrazione.
GNU ar può mantenere archivi i cui membri hanno nomi di qualsiasi lunghezza; tuttavia, in funzione di come ar è configurato sul proprio sistema, può essere imposto un limite sulla lunghezza dei nomi per compatibilità con formati di archivio mantenuti con altri strumenti. Se esiste, il limite è spesso di 15 caratteri (tipico dei formati relativi a a.out) o 16 caratteri (tipico dei formati relativi a coff).
ar è considerata un'utilità binaria, perché archivi di questo tipo sono spesso usati come librerie contenenti subroutine comunemente necessarie. Poiché spesso le librerie dipendono da altre librerie, se l'opzione --record-libdeps viene specificata ar può anche registrare le dipendenze di una libreria.
ar crea un indice nell'archivio dei simboli definiti in moduli oggetto rilocabili quando si specifica il modificatore s. Una volta creato, questo indice è aggiornato nell'archivio qualora ar apporti un cambiamento ai suoi contenuti (eccetto che per l'operazione aggiornamento q). Un archivio con tale indice velocizza il collegamento alla libreria, e permette alle routine nella libreria di chiamare le altre senza tener conto della loro posizione nell'archivio.
Si può usare nm -s o nm --print-armap per elencare questa tabella indice. Se a un archivio manca la tabella, può essere usata un'altra forma di ar chiamata ranlib per aggiungere solo la tabella.
GNU ar può creare opzionalmente un archivio leggero, che contiene un indice dei simboli e riferimenti alle copie originali dei file membri dell'archivio. Questo è utile per costruire librerie da usare all'interno di un albero costruito localmente, dove gli oggetti rilocabili ci si aspetta che rimangano disponibili, e copiare il contenuto di ogni oggetto comporterebbe solo spreco di tempo e di spazio.
Un archivio può essere o leggero o normale. Non può essere entrambi allo stesso tempo. Una volta creato, il formato dell'archivio non può essere cambiato senza prima cancellarlo e poi creare un nuovo archivio al suo posto.
Gli archivi leggeri sono anche flattened, così che aggiungendo un archivio leggero a un altro archivio leggero non lo nidifica, come accadrebbe con un archivio normale. Invece gli elementi del primo archivio vengono aggiunti individualmente al secondo archivio.
I percorsi agli elementi dell'archivio sono immagazzinati rispetto all'archiviostesso.
GNU ar è sviluppata per essere compatibile con due differenti strutture. Si può controllare la sua attività usando opzioni a riga di comando, come le diverse varietà di ar su sistemi Unix; o, se si specifica la singola opzione a riga di comando -M, la si può controllare con uno script fornito attraverso lo standard input, come il programma MRI «librarian».
GNU ar permette di mescolare il codice operazione p e i modificatori mod in qualunque ordine, all'interno del primo argomento della riga di comando.
Se lo si desidera, si può cominciare il primo argomento della riga di comando con un trattino.
La lettera chiave p specifica quale operazione eseguire; può essere qualunque delle seguenti, ma se ne deve specificare solo una:
Se si specifica il modificatore v, ar elenca ciascun modulo che viene cancellato.
L'ordinamento dei membri in un archivio può creare differenze in come i programmi sono collegati usando la libreria, se un simbolo è definito in più di un membro.
Se non sono usati modificatori con "m", ogni membro che si nomina negli argomenti member viene spostato alla fine dell'archivio; si possono usare i modificatori a, b, o i per spostarli invece in un punto specificato.
Se non si specificano argomenti member, tutti i file nell'archivio sono stampati.
I modificatori a, b e i non influenzano questa operazione; nuovi membri sono sempre posti alla fine dell'archivio.
Il modificatore v fa sì che ar elenchi ciascun file quando viene aggiunto.
Poiché il punto di questa operazione è la velocità, le implementazioni di ar hanno l'opzione di non aggiornare la tabella indice dei simboli dell'archivio, anche se ne esiste una. Tuttavia troppi sistemi differenti presumono che le tabelle dei simboli siano sempre aggiornate, perciò GNU ar ricostruirà la tabella anche con un'aggiunta rapida.
Notare che — GNU ar tratta il comando qs come sinonimo di r — sostituendo i file già esistenti nell'archivio e aggiungendo i nuovi file alla fine.
Se uno dei file nominati come membri... non esiste, ar visualizza un messaggio di errore, e lascia indisturbati tutti i membri esistenti dell'archivio che corrisponde a questo nome.
In modo predefinito, i nuovi membri sono aggiunti alla fine del file; ma si può usare uno dei modificatori a, b, o i per richiedere posizionamenti relativi a qualche membro esistente.
Il modificatore v usato con questa operazione ricava una riga di output per ciascun file inserito, insieme a una delle lettere a o r per indicare se il file è stato aggiunto (nessun membro vecchio cancellato) o sostituito.
Se non si specifica un membro sono elencati tutti i file nell'archivio.
Se c'è più di un file con lo stesso nome (diciamo, fie) in un archivio (diciamo, b.a), ar t b.a fie elenca solo la prima istanza; per vederle tutte bisogna richiedere l'elenco completo --- nel nostro esempio, ar t b.a.
Se non si specifica un membro, tutti i file nell'archivio vengono estratti.
I file non possono essere estratti da un archivio leggero, e ci sono restrizioni sull'estrazione dagli archivi creati con P; i percorsi non possono essere assoluti, non possono contenere ".." e tutte le sottodirectory del percorso devono esistere. Se si preferisce evitare queste restrizioni, allora utilizzare l'opzione --output per indicare la directory destinazione.
Un numero di modificatori (mod) può seguire immediatamente la lettera chiave p per specificare variazioni su di un comportamento di un'operazione:
Se binutils è stato configurato con --enable-deterministic-archives, questa modalità è attiva in modo predefinito. Può essere disabilitata col modificatore U, più avanti.
ar rcST archive.a subdir/file1 subdir/file2 file1
avrà come risultato che il primo "subdir/file1" verrà sostituito con "file1" dalla directory corrente. Aggiungere P impedisce questa sostituzione.
Nota — se un archivio è stato creato in maniera deterministica, cioè con il modificatore D, allora la sostituzione avverrà sempre e il modificatore u non sarà effettivo.
Questo è il predefinito a meno che binutils non sia stato configurato con --enable-deterministic-archives.
Il programma ar supporta anche alcune opzioni da riga di comando che non sono modificatori né azioni, ma che ne cambiano il comportamento in modi specifici:
Questa opzione è disponibile solo se la toolchain è stata costruita con il supporto abilitato per i plugin.
Se --plugin non è fornito, ma il supporto per i plugin è stato abilitato, allora ar cicla sui file in ${libdir}/bfd-plugins ordinati alfabeticamente e utilizza il primo plugin che richiede l'oggetto.
Notare che questa directory di ricerca dei plugin non è quella usata dal -plugin di ld. Se si vuole che ar utilizzi il plugin del linker questo va copiato nella directory ${libdir}/bfd-plugins. Per le compilazioni con GCC il plugin del linker è chiamato liblto_plugin.so.0.0.0. Per le compilazioni con Clang è chiamato LLVMgold.so. Il plugin di GCC è sempre compatibile con le precedenti versioni, sicché è sufficiente copiare il più nuovo.
Nota — anche se la presenza di questa opzione implica un'operazione di estrazione x, questa opzione va comunque inserita nella riga di comando.
Le opzioni in file sono separate da spazi vuoti. Si può includere uno spazio vuoto in un'opzione racchiudendo l'intera opzione fra apici, singoli o doppi. Può essere incluso qualsiasi carattere (compresa la barra inversa) facendo precedere al carattere una barra inversa. Il file può esso stesso contenere ulteriori opzioni @file; ciascuna di queste opzioni sarà elaborata ricorsivamente.
Copyright (c) 1991-2025 Free Software Foundation, Inc.
È permesso copiare, distribuire e/o modificare questo documento nei termini della “Licenza per documentazione libera GNU” (GNU Free Documentation License), versione 1.3 o ogni versione successiva pubblicata dalla Free Software Foundation; senza sezioni non modificabili, senza testi di prima di copertina e di quarta di copertina. Una copia della licenza è inclusa nella sezione intitolata “Licenza per la documentazione libera GNU" (GNU Free Documentation License).
La traduzione italiana di questa pagina di manuale è stata creata da Giulio Daprelà <giulio@pluto.it>, Hugh Hartmann <hhartmann@libero.it>, Marco Curreli <marcocurreli@tiscali.it> e Giuseppe Sacco <eppesuig@debian.org>
Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.
Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a pluto-ildp@lists.pluto.it.
| 3 marzo 2025 | binutils-2.44 |