De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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