ar - crea, modifica ed estrae da archivi
ar [
-X32_64] [
-]
p[
mod] [
--plugin
name] [
--target bfdname] [
--output
dirname] [
--record-libdeps libdeps] [
--thin]
[
relpos] [
count]
archive [
member...]
Il programma GNU
ar crea, modifica ed estrae da archivi. Un
archivio è un singolo file contenente una collezione di altri
file in una strutura che rende possibile ritrovare i singoli file originari
(chiamati
membri dell'archivio).
I contenuti originali dei file, modi (permessi), data e ora, proprietario, e
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, un limite sulla lunghezza dei nomi può essere imposto
per compatibilità con formati di archivio mantenuti con altri
strumenti. Se esiste, il limite è spesso di 15 caratteri (tipico di
formati relativi a a.out) o 16 caratteri (tipico di formati relativi a coff).
ar is considered a binary utility because archives of this sort are most
often used as
libraries holding commonly needed subroutines. Since
libraries often will depend on other libraries,
ar can also record the
dependencies of a library when the
--record-libdeps option is
specified.
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:
- 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 del simbolo dell'archivio, anche se ne esiste una. Tuttavia troppi
sistemi differenti presumono che le tabelle del simbolo siano sempre
aggiornate, perciò GNU ar ricostruirà la tabella
anche con un'aggiunta rapida.
Notare che - GNU ar tratta il comando q 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.
Files cannot be extracted from a thin archive, and there are restrictions on
extracting from archives created with P: The paths must not be
absolute, may not contain "..", and any subdirectories in the
paths must exist. If it is desired to avoid these restrictions then used
the --output option to specify an output directory.
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
- Specify dependencies of this library. The dependencies must
immediately follow this option character, must use the same syntax as the
linker command line, and must be specified within a single argument. I.e.,
if multiple items are needed, they must be quoted to form a single command
line argument. For example 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
- Display member offsets inside the archive. Use together
with the t option.
- P
- Use the full path name when matching or storing names in
the archive. Archives created with full path names are not POSIX
compliant, and thus may not work with tools other than up to date GNU
tools. Modifying such archives with GNU ar without using P
will remove the full path names unless the archive is a thin archive. Note
that P may be useful when adding files to a thin archive since
r without P ignores the path when choosing which element to
replace. Thus
ar rcST archive.a subdir/file1 subdir/file2 file1
will result in the first "subdir/file1" being replaced with
"file1" from the current directory. Adding P will prevent
this replacement.
- 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
- Deprecated alias for --thin. T is not
recommended because in many ar implementations T has a different
meaning, as specified by 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.
- U
- Do not operate in deterministic mode. This is
the inverse of the D modifier, above: added files and the archive
index will get their actual UID, GID, timestamp, and file mode values.
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.
The
ar program also supports some command-line options which are neither
modifiers nor actions, but which do change its behaviour in specific ways:
- --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
- The optional command-line switch --plugin
name causes ar to load the plugin called name which
adds support for more file formats, including object files with link-time
optimization information.
This option is only available if the toolchain has been built with plugin
support enabled.
If --plugin is not provided, but plugin support has been enabled then
ar iterates over the files in ${libdir}/bfd-plugins in
alphabetic order and the first plugin that claims the object in question
is used.
Please note that this plugin search directory is not the one used by
ld's -plugin option. In order to make ar use the
linker plugin it must be copied into the ${libdir}/bfd-plugins
directory. For GCC based compilations the linker plugin is called
liblto_plugin.so.0.0.0. For Clang based compilations it is called
LLVMgold.so. The GCC plugin is always backwards compatible with
earlier versions, so it is sufficient to just copy the newest one.
-
--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
- The --output option can be used to specify a path to
a directory into which archive members should be extracted. If this option
is not specified then the current directory will be used.
Note - although the presence of this option does imply a x extraction
operation that option must still be included on the command line.
-
--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.
nm(1),
ranlib(1) e i campi Info per
binutils.
Copyright (c) 1991-2023 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à <
[email protected]>, Hugh Hartmann
<
[email protected]> e Marco Curreli <
[email protected]>
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
[email protected]