strip: diminuindo o tamanho dos programas compilados
Muitos usuários necessitam compilar programas a partir
do código fonte e a imensa maioria usa os seguintes
comandos em ordem:
configure;
make;
e make install.
Estes comandos criam um programa com a maioria de suas
funcionalidades, algumas verdadeiramente desnecessárias, como
a inclusão de símbolos nos objetos.
Para diminuir o tamanho dos programas compilados, existe um
executável presente no pacote binutils (GNU Binary
Development Tools) de grande utilidade, o strip.
Strip é um comando usado para a remoção dos símbolos em objetos,
o que reduz o tamanho de executáveis e bibliotecas. A maioria
dos símbolos é usada para o debug do programa, ou seja,
importante apenas para desenvolvedores.
Depois de usar o comando make, procure pelos executáveis e
bibliotecas e use o comando strip. Existem diversos parâmetros
para o comando, mas para remover todos os símbolos basta usar:
$ strip nomedoexecutável
Em teste, após compilar o gnumeric, o executável ficou
com 33Mb de tamanho, após a execução do strip caiu para 4Mb.
Use o comando strip em executáveis e bibliotecas não estripadas
ainda para diminuir o tamanho do seu sistema, você pode estripar
executáveis e bibliotecas já instalados.
A maioria dos pacotes das distribuições já vêm com os executáveis
e bibliotecas estripados.
[4] Comentário enviado por Grobsch em 20/01/2005 - 08:44h
Para os executáveis é tira e queda... diminue radicalmente o tamanho..
Para as bibliotecas, algumas poucas podem necessitar de static link, mas sempre funciona comigo...
Apenas não é bom utilizá-lo com os módulos de kernel... É possível remover apenas alguns símbolos já que o comando insmod para certos módulos precisa dos símbolos.
[5] Comentário enviado por jose_maria em 20/01/2005 - 21:20h
Bem legal isso. Eu não conhecia.
Reduziu em 20% uns programas que eu fiz.
Esses binários vão continuar a funcionar se eu levar eles para outras máquinas?
[6] Comentário enviado por Grobsch em 21/01/2005 - 08:10h
Acredito que sim porque os pacotes do Slackware usam executáveis estripados e fiz também assim com o GoblinX... e ambos funcionam em inúmeros computadores...
Alguns executáveis maiores terão ainda mais redução de símbolos...
[8] Comentário enviado por morvan em 24/01/2005 - 17:54h
Parabéns pela dica. A título de informe, há bastante tempo atrás, quando era comum, para mim, compilar programas, tanto em ASM como em outras linguagens, no MSDOS, havia o Exehdr.exe. Ele fazia o mesmo que o utilitário que vós citais, porém, com uma abordagem diferente: ele mexia no executável, manipulando o total de memória mínimo de execução. Não mexia na extensão (em Bytes) do executável. Este conforme visto, retira as informações que interessam ao depurador. Perfeito.
Obrigado e um abraço.
[9] Comentário enviado por beetle_juice em 15/05/2005 - 12:39h
Perdido no v.o.l como sempre... me deparo com essa dica muito show do meu amigo Grobsch! Não conhecia este tipo de comando, vou experimentar com certeza pois o Slack véio aqui em casa, jah tah passando dos 60% de uso no HD rs...
PS: Tá saindo uns 3 artigos novos aí no v.o.l fica atento!!!
t+
[]'s
beetle_juice.
[10] Comentário enviado por ulbj05 em 10/01/2006 - 13:56h
Muito boa a sua dica!!!
Não testei ainda mais vou testar!!! Este pacote Binutils já vem instalado por padrão na maioria das distribuições? Eu utilizo o Kurumin...vou procurar para ver se já está instalado e se não, se já está disponível para instalação a partir do apt-get. De qualquer maneira vou testar e ver o resultado.