Provided by: manpages-it_4.19.0-7_all bug

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] archive [member...]

DESCRIZIONE

       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".

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 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.

VEDERE ANCHE

       nm(1), ranlib(1) e i campi Info per binutils.

COPYRIGHT

       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").

TRADUZIONE

       La traduzione italiana di questa pagina di manuale è stata creata da Giulio Daprelà
       <giulio@pluto.it>, Hugh Hartmann <hhartmann@libero.it> e Marco Curreli
       <marcocurreli@tiscali.it>

       Questa traduzione è documentazione libera; leggere la GNU General Public License Versione
       3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.