Comando strip do Linux
Em sistemas operacionais do tipo Unix, o comando strip descarta símbolos de arquivos de objetos compilados .
Este documento descreve a versão Linux do strip .
Descrição
strip é um utilitário GNU para “retirar” símbolos de arquivos de objetos. Isso é útil para minimizar o tamanho do arquivo , simplificando-os para distribuição. Também pode ser útil para dificultar a engenharia reversa do código compilado .
A lista de arquivos de objetos fornecidos para remover pode incluir arquivos e pelo menos um arquivo de objeto deve ser fornecido. Os próprios arquivos de objeto são modificados por faixa ; novos arquivos não são criados .
Sintaxe
strip [ opções ] objfile [...]
Opções
-F bfdname , –target = bfdname | Trate o original objfile como um arquivo com o formato de código objeto nomedab , e reescrevê-lo no mesmo formato. |
–Socorro | Mostre um resumo das opções para remover e sair. |
–info | Exiba uma lista mostrando todas as arquiteturas e formatos de objeto disponíveis. |
-I bfdname , –input -target = bfdname | Trate o original objfile como um arquivo com o formato de código objeto nomedab . |
-O bfdname , –output-target = bfdname | Substitua objfile por um arquivo no formato de saída bfdname . |
-R nome da seção , –remove-section = sectionname | Remova qualquer seção chamada sectionname do arquivo de saída. Esta opção pode ser dada mais de uma vez. Observe que o uso inadequado dessa opção pode tornar o arquivo de saída inutilizável. |
-s , –strip-all | Remova todos os símbolos. |
-g , -S , -d , –strip-debug | Remova apenas os símbolos de depuração. |
–strip-dwo | Remova o conteúdo de todas as seções DWARF .dwo , deixando as seções de depuração restantes e todos os símbolos intactos. |
– sem necessidade de tira | Remova todos os símbolos que não são necessários para o processamento de realocação. |
-K symbolname , –keep-symbol = symbolname | Ao retirar símbolos, mantenha o símbolo symbolname, mesmo que normalmente seja retirado. Esta opção pode ser dada mais de uma vez. |
-N symbolname , –strip-symbol = symbolname | Remova o símbolo nome do símbolo do arquivo de origem. Esta opção pode ser dada mais de uma vez e pode ser combinada com outras opções de faixa, exceto -K . |
-o arquivo | Coloque a saída removida no arquivo, em vez de substituir o arquivo existente. Quando esse argumento é usado, apenas um argumento de objfile pode ser especificado. |
-p , –preserve-datas | Preserve as datas de acesso e modificação do arquivo. |
-D , –enable-deterministic-archives | Opere no modo determinístico. Ao copiar membros do arquivo morto e escrever o índice do arquivo morto, use zero para UIDs, GIDs, carimbos de data e hora e use modos de arquivo consistentes para todos os arquivos. |
-w , –wildcard | Permitir expressões regulares em nomes de símbolos usados em outras opções de linha de comando . Os operadores de ponto de interrogação ( ? ), Asterisco ( * ), barra invertida ( \ ) e colchetes ( [] ) podem ser usados em qualquer lugar do nome do símbolo. Se o primeiro caractere do nome do símbolo for o ponto de exclamação ( ! ), O sentido da chave será revertido para esse símbolo. Por exemplo:
-w -K! Foo -K fo * faria com que a tira mantivesse apenas símbolos que começam com as letras ” fo “, mas descartasse o símbolo ” foo “. |
-x , –discard-all | Remova símbolos não globais. |
-X , –discard-locals | Remova os símbolos locais gerados pelo compilador. (Geralmente, começam com ` L ‘ou` . ‘.) |
–keep-file-symbols | Ao remover um arquivo, talvez com –strip-debug ou –strip-desnecessário , mantenha todos os símbolos que especifiquem os nomes dos arquivos de origem, que de outra forma seriam removidos. |
–only-keep-debug | Retire um arquivo, removendo o conteúdo de qualquer seção que não seria removida por –strip-debug e deixando as seções de depuração intactas. Nos arquivos ELF, isso preserva todas as seções de notas na saída.
A intenção é que esta opção seja usada em conjunto com –add-gnu-debuglink para criar um executável em duas partes. Um binário despojado que ocupará menos espaço na RAM e em uma distribuição e o segundo um arquivo de informações de depuração, necessário apenas se as habilidades de depuração forem necessárias. O procedimento sugerido para criar esses arquivos é o seguinte:
Nota – a escolha de .dbg como uma extensão para o arquivo de informações de depuração é arbitrária; pode ser qualquer coisa. Além disso, a etapa –only-keep-debug é opcional. Você poderia fazer o seguinte:
Em outras palavras, o arquivo apontado pelo –add-gnu-debuglink pode ser o executável completo. Ele não precisa ser um arquivo criado pela opção –only-keep-debug . Nota – essa opção deve ser usada apenas em arquivos totalmente vinculados. Não faz sentido usá-lo em arquivos de objetos em que as informações de depuração podem estar incompletas. O gnu_debuglink recurso atualmente suporta apenas a presença de um nome do arquivo que contém informações de depuração, e não vários nomes de arquivo em uma base one-per-objeto-arquivo. |
-V , –version | Mostra o número da versão da faixa. |
-v , –verbose | Saída detalhada : lista todos os arquivos de objeto modificados. No caso de arquivos, ` strip -v ‘lista todos os membros do arquivo. |
Exemplos
strip -s a.out
O exemplo acima retira a tabela de símbolos do arquivo executável a.out .