Man page - ar(1)
Packages contains this manual
apt-get install binutils-common
Available languages:
en it pl ja ro zh_TW zh_CNManual
AR
NOMESINTASSI
DESCRIZIONE
OPZIONI
VEDERE ANCHE
COPYRIGHT
TRADUZIONE
NOME
ar - crea, modifica ed estrae da archivi
SINTASSI
ar [ -X32_64 ] [ - ] p [ mod ] [ --plugin name ] [ --target bfdname ] [ --output dirname ] [ --record-libdeps libdeps ] [ --thin ] [ relpos ] [ count ] archivio [ membro ...]
DESCRIZIONE
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.
OPZIONI
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:
|
d |
Cancella moduli dallâarchivio. Specifica i nomi dei moduli da cancellare come membri ...; lâarchivio non viene modificato se non si specificano file da cancellare. |
Se si specifica il modificatore v , ar elenca ciascun modulo che viene cancellato.
|
m |
Usare questa operazione per spostare i membri in un archivio. |
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.
|
p |
Stampa i membri dellâarchivio specificati, sul file dello standard output. Se è specificato il modificatore v , visualizza il nome del membro prima di copiare i suoi contenuti sullo standard output. |
Se non si specificano argomenti member , tutti i file nellâarchivio sono stampati.
|
q |
Quick append ; Storicamente aggiunge i file membro ... alla fine dellâ archivio , senza verificare le sostituzioni. |
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.
|
r |
Inserisce i file membri ... in archivio (con sostituzione ). Questa operazione differisce da q nel senso che tutti i membri precedentemente esistenti sono cancellati se i loro nomi corrispondono a quelli che sono stati aggiunti. |
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.
|
s |
Aggiunge un indice allâarchivio, o lo aggiorna se giĂ esiste. Notare che questo comando è unâeccezione alla regola che ci può essere solo una lettera comando, in quanto è possibile usarla sia come comando che come modificatore. In entrambi i casi fa la stessa cosa. |
||
|
t |
Visualizza una tabella che elenca i contenuti dellâ archivio , o quelli dei file elencati in membro ... che sono presenti nellâarchivio. Normalmente è mostrato solo il nome del membro; se si vogliono vedere anche i modi (permessi), data e ora, proprietario, grupppo e dimensione, si può richiederlo specificando anche il modificatore v . |
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 .
|
x |
Estrae membri (chiamati membro ) dallâarchivio. Si può usare il modificatore v con questa operazione, per richiedere che ar elenchi il nome di ciascun membro quando lo estrae. |
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:
|
a |
Aggiunge nuovi file dopo un membro esistente dellâarchivio. Se si usa il modificatore a , il nome di un membro di archivio esistente deve essere presente come argomento relpos , prima della specificazione dellâ archivio . |
||
|
b |
Aggiunge nuovi file prima di un membro esistente dellâarchivio.Se si usa il modificatore b , il nome di un membro di archivioesistente deve essere presente come argomento relpos , prima dellaspecificazione dellâ archivio . (lo stesso come i ). |
||
|
c |
Crea lâarchivio. Lâ archivio specificato è sempre creato se esso non esiste, quando si richiede un aggiornamento. Ma, usando questo modificatore, viene emesso un avviso, a meno che non si specifichi in anticipo che si intende crearlo. |
||
|
D |
Opera in modalitĂ deterministica . Quando si aggiungono file e lâindice di archivio, usa zero per gli UID, i GID e le marcature temporali, e usa permessi di file coerenti per tutti i file. Quando viene usata questâopzione, se ar è usato con le stesse identiche opzioni e gli stessi file, esecuzioni multiple creano file di output identici, a prescindere da proprietari, gruppi, permessi, o data/ora di modifica, dei file di input. |
Se binutils è stato configurato con --enable-deterministic-archives , questa modalità è attiva in modo predefinito. Può essere disabilitata col modificatore U , piÚ avanti.
|
f |
Tronca i nomi nellâarchivio. GNU ar normalmente permetterĂ nomi di file di qualunque lunghezza. Questo farĂ si che vengano creati archivi non compatibili con i programmi ar nativi di certi sistemi. Se questo è un problema, il modificatore f può essere usato per troncare i nomi dei file quando vengono messi nellâarchivio. |
||
|
i |
Inserisce nuovi file prima di un membro esistente dellâarchivio. Se si usa il modificatore i , il nome di un membro di archivio esistente deve essere presente come argomento relpos , prima della specificazione dellâ archivio . (lo stesso come b ). |
||
|
l |
Indica le dipendenze di una libreria. Le dipendenze devono seguire immediatamente il carattere di questa opzione, usando la stessa sintassi della linea di comando del linker, e devono essere specificate usando un solo argomento. Vale a dire che se fossero necessari vari elementi, devono essere inseriti tra virgolette per formare un solo argomento da linea di comando. Per esempio l "-L/usr/local/lib -lmydep1 -lmydep2" |
||
|
N |
Usa il parametro count . Questo è usato se ci sono campi multipli nellâarchivio con lo stesso nome. Estrae o cancella lâistanza count del dato nome dallâarchivio. |
||
|
o |
Preserva le date originali dei membri quando li si estrae. Se non si specifica questo modificatore, i file estratti dallâarchivio sono marcati con lâora dellâestrazione. |
||
|
O |
Mostra gli offset dei membri allâinterno dellâarchivio. Da usare con lâopzione t . |
||
|
P |
Usa il nome di percorso completo quando si controllano le corrispondenze o si memorizzano nomi nellâarchivio. Gli archivi creati con i percorsi completi non sono aderenti allo standard POSIX e quindi potrebbero non funzionare con strumenti diversi da quelli GNU aggiornati. Modificando questi archivi con GNU ar senza usare lâopzione P rimuoverò i percorsi completi a meno che lâarchivio non sia leggero. Notare che P potrebbe essere utile quando si aggiungono file ad un archivio leggero poichĂŠ r senza P ignora il percorso quando sceglie lâelemento da sostituire. Quindi |
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.
|
s |
Scrive un indice dei file oggetto nellâarchivio, o ne aggiorna uno esistente, anche se non vengono apportati altri cambiamenti allâarchivio. Si può usare questo modificatore sia con altre operazioni che da solo. Lâesecuzione di ar s su un archivio è equivalente allâesecuzione di ranlib su di esso. |
||
|
S |
Non genera una tabella simboli dellâarchivio. Questo può accelerare la costruzione di una grande libreria in molte fasi. Lâarchivio risultante non può essere usato con il linker. Per costruire una tabella simboli bisogna omettere il modificatore S sullâultima esecuzione di ar , o bisogna eseguire ranlib sullâarchivio. |
||
|
T |
Alias deprecato per --thin . T non è raccomandato perchÊ in varie implementazioni T ha un significato diverso, come specificato da X/Open System Interface. |
||
|
u |
Normalmente ar r ... inserisce tutti i file elencati nellâarchivio. Se si desidera inserire solo quei file elencati che sono piĂš nuovi dei membri esistenti dello stesso nome, usare questo modificatore. Il modificatore u è permesso solo per lâoperazione r (sostituzione). In particolare, la combinazione qu non è permessa, poichĂŠ la verifica di data e ora farebbe perdere ogni vantaggio in velocitĂ dallâoperazione q . |
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.
|
U |
Indica di non operare in modalitĂ deterministica . Questo è lâinverso del modificatore D visto sopra: i file aggiunti e lâindice di archivio producono i loro valori effettivi di UID, GID, marcatura temporale e permessi. |
Questo è il predefinito a meno che binutils non sia stato configurato con --enable-deterministic-archives .
|
v |
Questo modificatore richiede la versione prolissa di unâoperazione. Molte operazioni visualizzano informazioni aggiuntive, come i nomi di file processati, quando viene aggiunto il modificatore v . |
||
|
V |
Questo modificatore mostra il numero di versione di ar . |
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:
--help
Mostra lâelenco delle opzioni da riga di comando supportate da ar ed poi esce.
--version
Mostra le informazioni sulla versione di ar ed poi esce.
-X32_64
ar ignora unâopzione iniziale chiamata -X32_64 , per compatibilitĂ con AIX. Il comportamento prodotto da questa opzione è il comportamento predefinito di GNU ar . ar non supporta nessuna delle altre opzioni -X ; in particolare, esso non supporta -X32 , che è il comportamento predefinito di AIX ar .
--plugin nome
Il commutatore opzionale da riga di comando --plugin nome fa caricare a ar il plugin chiamato nome che aggiunge il supporto per altri formati di file, inclusi i file oggetto con informazioni sullâottimizzazione link-time.
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.
--target target
Il commutatore opzionale da riga di comando --target bfdname specifica che i membri dellâarchivio sono in un formato di codice oggetto diverso dal formato predefinito per il sistema in uso. Si veda
--output dirname
Lâopzione --output può essere usata per indicare il percorso di una directory nella quale i membri dellâarchivio verranno estratti. Se questa opzione non è specificata verrĂ usata la directory corrente.
Nota â anche se la presenza di questa opzione implica unâoperazione di estrazione x , questa opzione va comunque inserita nella riga di comando.
--record-libdeps libdeps
Lâopzione --record-libdeps è identica al modificatore l , solo che è scritta nella forma lunga.
--thin
Rende lâ archivio specificato un archivio leggero . Se esiste giĂ ed è un archivio regolare, i membri esistenti devono essere presenti nella stessa directory come archivio .
@ file
Legge le opzioni da riga di comando da file . Le opzioni lette sono inserite al posto dellâopzione originale @ file . Se file non esiste o non può essere letto, lâopzione sarĂ trattata letteralmente, e non rimossa.
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.
VEDERE ANCHE
nm (1), ranlib (1) e i campi Info per binutils .
COPYRIGHT
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).
TRADUZIONE
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 .