você está aqui: Home  → Arquivo de Mensagens

Redução do tamanho do código executável de programas

Colaboração: Paulo Antonio Hypolito Rodrigues

Data de Publicação: 06 de Agosto de 1997

Os executaveis são muitas vezes compilados com informacoes de depuração (debug) e posteriormente "linkados" mantendo-se extensas tabelas de simbolos nos executaveis.

Se voce quer reduzir o tamanho de alguns executaveis, utilize o utilitario 'strip' sobre o executavel.

Para saber se o programa já passou pelo strip:

$ file pine
pine:    ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped

$ ls -go pine
-rwxrwxr-x   2 3076640 Jul 31 17:07 pine
 
$ strip pine

$ file pine
pine:    ELF 32-bit MSB executable SPARC Version 1, dynamically linked, stripped

$ ls -go pine
-rwxrwxr-x   2 1831156 Jul 31 17:17 pine

Se voce quer compilar o programa sem o codigo para depuração use a opção -LDFLAGS="-s".

não execute o strip sobre ele mesmo, copie-o com outro nome e execute o comando, depois é só remover o anterior.

Nesta mesma linha, se voce não pretende depurar um "core" que alguma aplicação venha a gerar na sua area, voce pode colocar um limite baixo para o tamanho dos "cores".

O comando depende do seu SHELL.

No caso do Bash para ver os limites:

$ ulimit -a
 
core file size (blocks)     unlimited
data seg size (kbytes)      2097148
file size (blocks)          unlimited
open files                  64
pipe size (512 bytes)       10
stack size (kbytes)         8192
cpu time (seconds)          unlimited
max user processes          2021
virtual memory (kbytes)     unlimited

Acrescente no arquivo .profile ou .bashrc ulimit -c 102400.

No caso do CSH:

$ limit

cputime         unlimited
filesize        unlimited
datasize        2097148 kbytes
stacksize       8192 kbytes
coredumpsize    unlimited
descriptors     64 
memorysize      unlimited

p. ex.:
$ limit coredumpsize 100k

Meus agradecimentos ao Paulino Ng <<paulino (a) na-sp rnp br>> pela dica e revisão do texto acima.



Veja a relação completa dos artigos de Paulo Antonio Hypolito Rodrigues