Provided by: manpages-it_4.27.0-1_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] 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.

binutils-2.44                                     3 marzo 2025                                             AR(1)