STRIP(1)

NOME
strip - scarta simboli e altri dati dai file oggetto

SINTASSI
strip [-F nomebfd |--target=nomebfd]
      [-I nomebfd |--input-target=nomebfd]
      [-O nomebfd |--output-target=nomebfd]
      [-s|--strip-all]
      [-S|-g|-d|--strip-debug]
      [--strip-dwo]
      [-K nomesimbolo|--keep-symbol=nomesimbolo]
      [-M|--merge-notes][--no-merge-notes]
      [-N nomesimbolo |--strip-symbol=nomesimbolo]
      [-w|--wildcard]
      [-x|--discard-all] [-X |--discard-locals]
      [-R nomesezione |--remove-section=nomesezione]
      [--keep-section=modellosezione]
      [--remove-relocations=modellosezione]
      [--strip-section-headers]
      [-o file] [-p|--preserve-dates]
      [-D|--enable-deterministic-archives]
      [-U|--disable-deterministic-archives]
      [--keep-section-symbols]
      [--keep-file-symbols]
      [--only-keep-debug]
      [-v |--verbose] [-V|--version]
      [--help] [--info]
      fileoggetto...

DESCRIZIONE
GNU strip scarta tutti i simboli dai file oggetto fileoggetto. L'elenco dei file oggetto può includere archivi. Deve essere fornito almeno un file oggetto.

strip modifica i file nominati negli argomenti, anziché scrivere copie modificate con nomi differenti.

OPZIONI

-F nomebfd
--target=nomebfd
    Tratta il fileoggetto originale come un file con il codice oggetto nel formato nomebfd, e lo riscrive nello stesso formato.

--help
    Mostra un sommario delle opzioni di strip ed esce.

--info
    Visualizza un elenco che mostra tutte le architetture e i formati oggetto disponibili.

-I nomebfd
--input-target=nomebfd
    Tratta l'originale fileoggetto come file con il codice oggetto nel formato nomebfd.

-O nomebfd
--output-target=nomebfd
    Sostituisce fileoggetto con un file nel formato di output nomebfd.

-R nomesezione
--remove-section=nomesezione
    Rimuove tutte le sezioni chiamate nomesezione dal file di output. Questa opzione può essere data più di una volta. Notare che l'uso inappropriato di questa opzione può rendere inutilizzabile il file di output. Il carattere "wildcard" * può essere dato alla fine di nomesezione. In tal caso, qualsiasi sezione che inizia con nomesezione verrà rimossa.

    Se il primo carattere di modellosezione è il punto esclamativo (!) allora la corrispondente sezione non verrà rimossa anche se un precedente utilizzo di --remove-section sulla stessa riga di comando avrebbe fatto diversamente. Ad esempio:

              --remove-section=.text.* --remove-section=!.text.foo

    rimuoverà tutte le sezioni che corrispondo al modello '.text.*', me non rimuoverà la sezione '.text.foo'.

--keep-section=modellosezione
    Durante la rimozione di sezioni dal file di output, mantiene le sezioni che corrispondono a modellosezione.

--remove-relocations=modellosezione
    Rimuove rilocazioni dal file di output per ogni sezione corrispondente a modellosezione. Questa opzione può essere usata più volte. Notare che usare quest'opzione in maniera inappropriata può fare generare un file inutilizzabile. I caratteri jolly sono accetti da modellosezione. Ad esempio:

              --remove-relocations=.text.*

    rimuoverà le informazioni di rilocazione da tutte le sezioni che corrispondono al modello '.text.*'.

    Se il primo carattere di modellosezione è un punto esclamativo (!) allora dalle corrispondenti sezioni non verranno rimosse le rilocazioni anche se un precedente utilizzo di --remove-relocations lo avrebbe fatto. Ad esempio:

              --remove-relocations=.text.* --remove-relocations=!.text.foo

    rimuoverà le informazioni di rilocazione da tutte le sezioni che corrispondono al modello '.text.*', ma non quelle che corrispondono alla sezione '.text.foo'.

--strip-section-headers
    Riduce le intestazioni di sezione. Questa opzione è specifica per i file ELF. Implica --strip-all e --merge-notes.

-s
--strip-all
    Rimuove tutti i simboli.

-g
-S
-d
--strip-debug
    Rimuove solo i simboli di debug.

--strip-dwo
    Rimuove il contenuto di tutte le sezioni DWARF .dwo, lasciando intatte le rimanenti sezioni di debugging e tutti i simboli. Vedere la descrizione di questa opzione nella sezione objcopy per maggiori dettagli.

--strip-unneeded
    Rimuove tutti i simboli non necessari per il processo di rilocazione oltre ai simboli di debug e alle sezioni rimosse da --strip-debug.

-K nomesimbolo
--keep-symbol=nomesimbolo
    Quando viene sguarnito dei simboli, mantiene solo il simbolo nomesimbolo anche se normalmente verrebbe rimosso. Quest'opzione può essere data più di una volta.

-M
--merge-notes
--no-merge-notes
    Per i file ELF, cerca (o evita) di ridurre la dimensione di ogni sezione di tipo SHT_NOTE togliendo le note duplicate. Il comportamento predefinito è di abilitare questa riduzione eccetto per le informazioni di debug e DWO.

-N nomesimbolo
--strip-symbol=nomesimbolo
    Rimuove il simbolo nomesimbolo dal file sorgente. Questa opzione può essere data più di una volta, e può essere combinata con opzioni di strip diverse da -K.

-o file
    Mette il risultato di strip in file, invece di sostituire il file esistente. Quando viene usato questo argomento, può essere specificato solo un argomento fileoggetto.

-p
--preserve-dates
    Preserva le date di accesso e modifica del file.

-D
--enable-deterministic-archives
    Opera in modalità deterministica. Quando si copiano i membri dell'archivio e si scrive 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.

    Se binutils è stato configurato con --enable-deterministic-archives, questa modalità è attiva in modo predefinito. Può essere disabilitata col modificatore -U.

-U
--disable-deterministic-archives
    Non opera in modalità deterministica. Questo è l'inverso del modificatore D- visto sopra: quando si copiano i membri dell'archivio e si scrive 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.

-w
--wildcard
    Permette le espressioni regolari in nomesimbolo usate in altre opzioni da riga di comando. Gli operatori punto di domanda (?), asterisco (*), barra inversa (\) e parentesi quadre ([]) possono essere usati ovunque nel nome del simbolo. Se il primo carattere del nome del simbolo è il punto esclamativo (!), il senso dell'opzione per tale simbolo è invertito. Per esempio:

              -w -K !foo -K fo*

    farà sì che strip prenda solo simboli che iniziano con le lettere "fo", ma scarterà il simbolo "foo".

-x
--discard-all
    Rimuove i simboli non globali.

-X
--discard-locals
    Rimuove i simboli locali generati dal compilatore. (Questi normalmente iniziano con L o ..)

--keep-section-symbols
    Quando semplifica un file, magari con --strip-debug o con --strip-unneeded, mantiene qualsiasi simbolo che specifichi nomi di sezioni che altrimenti sarebbero rimosse.

--keep-file-symbols
    Quando semplifica un file, magari con --strip-debug o con --strip-unneeded, mantiene qualsiasi simbolo che specifichi nomi di file sorgenti, che altrimenti sarebbero rimossi.

--only-keep-debug
    Sguarnisce un file, svuotando il contenuto di ogni sezione che non verrebbe rimossa da --strip-debug e lasciando le sezioni di debug intatte. Nei file ELF, questo preserva tutte le sezioni di note nell'output.

    Nota - le intestazioni di sezione delle sezioni svuotate sono mantenute, compresa la loro dimensione, ma il contenuto ne è rimosso. Le intestazioni di sezione sono mantenute in modo che altri strumenti le possano fare corrispondere le informazioni di debug con il vero eseguibile, anche quest'ultimo è stato rilocato in un diverso spazio di indirizzi.

    L'intenzione è che questa opzione venga usata in unione con --add-gnu-debuglink per creare un eseguibile in due parti. Una è un binario completamente sguarnito che occuperà meno spazio in RAM e in una distribuzione; la seconda è un file di informazione di debugging, che è necessario solo se sono richieste capacità di debugging. La procedura suggerita per creare questi file è la seguente:

    1.  Collega l'eseguibile come normale. Supponendo che sia chiamato "foo" quindi...

    2.  esegue "objcopy --only-keep-debug foo foo.dbg" per creare un file che contiene le informazioni per il debug.

    3.  Esegue "strip --strip-debug foo" per creare un eseguibile senza le informazioni di debug.

    4.  Esegue "objcopy --add-gnu-debuglink=foo.dbg foo" per aggiungere un collegamento alle informazioni di debugging nell'eseguibile sguarnito.

    Nota---la scelta di ".dbg" come estensione del file di informazioni di debug è arbitraria. Anche il passo "--only-keep-debug" è opzionale. Si può invece fare questo:

    1.  Collega l'eseguibile come normale.

    2.  Copia "foo" su "foo.full".

    3.  Esegue "strip --strip-debug foo".

    4.  Esegue "objcopy --add-gnu-debuglink=foo.full foo".

    ad esempio il file a cui punta --add-gnu-debuglink può essere l'eseguibile completo. Non deve essere un file creato dall'opzione --only-keep-debug.

    Nota --- quest'opzione è intesa soltanto per l'uso con file completamente collegati. Non ha senso usarla su file oggetto dove l'informazione di debugging può essere incompleta. Inoltre la funzionalità gnu_debuglink attualmente supporta la presenza di un solo nome di file contenente informazioni di debugging, e non più nomi di file, uno per ogni file oggetto.

--plugin nome
    Carica il plugin chiamato nome per aggiungere il supporto a tipi di file extra. Quest'opzione è disponibile solamente se la toolchain è stata compilata con il supporto abilitato per i plugin.

    Se non viene dato --plugin, ma il supporto per i plugin è stato abilitato allora strip cicla sui file in ${libdir}/bfd-plugins in ordine alfabetico e utilizza il primo plugin che sa gestire l'oggetto in questione.

    Notare che questa directory dei plugin non è quella usata dall'opzione 's -plugin di ld. Se si vuole che strip utilizzi il plugin del linker questo va copiato nella directory ${libdir}/bfd-plugins. Per le compilazioni che usano GCC il plugin è chiamato liblto_plugin.so.0.0.0. Per Clang è chiamato LLVMgold.so. Il plugin di GCC è sempre compatibile con le versioni precedenti, quindi è sufficiente copiare il più recente.

-V
--version
    Mostra il numero di versione di strip.

-v
--verbose
    Output prolisso: elenca tutti i file oggetto modificati. Nel caso di archivi, strip -v elenca tutti i membri dell'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
i campi Info per binutils.

COPYRIGHT
Copyright (c) 1991-2026 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>, Marco Curreli <marcocurreli@tiscali.it> e Giuseppe Sacco <eppesuig@debian.org>

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.