Linux FAQ

Seção 5. Portando, compilando e obtendo programas




Questão 5.9. Meus executáveis são (muito) grandes.

Com um compilador ELF (veja P8.2. O que é esse tal de ELF?) a causa mais comum de executáveis grandes é a falta de um link para a biblioteca .so apropriada que você está usando. Deve haver um link como libc.so para cada biblioteca como libc.so.5.2.18.

Com um compilador a.out (veja P8.2. O que é esse tal de ELF?) a causa mais comum do problema é o flag -g passado ao linkeditor (compilador). Ele produz um programa que é "linkado" estaticamente (além de informações para depuração no arquivo de saída), i.e. um que inclui uma cópia da bilioteca C, ao invés de usar uma copia ligada dinamicamente.

Outros fatores a serem investigados são -O e -O2 que habilitam otimização (veja documentação do GCC) e -s (ou o comando strip) que remove informações de símbolos do binário resultante (tornando a depuração totalmente impossível).

Você pode querer usar -N em executáveis muito pequenos (menores que 8K com a opcção -N), mas você não deve usá-lo a menos que esteja ciente das implicações sobre a performance, e definitivamente jamais em daemons.


Voltar para o Índice