Gentoo Portage Tricks

Falha de segmentação a compilar o pacote Binutils

Se obtiver erros do GCC como falhas de segmentação durante a compilação do pacote Binutils (o compilador mostra a mensagem "internal compiler error"), o mais provável é memória insuficiente.

Este problema é comum em máquinas com pouca memória. Tem duas alternativas:

  1. desactivar alguns serviços;
  2. aumentar temporariamente a memória adicionando memória virtual num ficheiro swap dinâmico.

Caso a primeira solução não resolva o problema, a segunda também não é difícil de implementar.

Use o comando dd para criar um ficheiro cheio de zeros. Para uma máquina com 2GB de RAM, um ficheiro com 1GB deverá ser suficiente - pelo menos, no nosso caso, resolveu o problema:

dd if=/dev/zero of=<caminho_do_ficheiro>/ficheiro.swp bs=1MB count=1024


Depois, prepare-o para swap e active-o:

mkswap <caminho_do_ficheiro>/ficheiro.swp
swapon <caminho_do_ficheiro>/ficheiro.swp


A partir deste momento terá mais 1GB de memória virtual disponível. Caso não resolva, pode sempre aumentar o tamanho do ficheiro com o dd, substituindo o valor 1024 por um valor superior (por exemplo, 2048 para obter 2GB), mas não sem primeiro desactivar o ficheiro:

swapoff <caminho_do_ficheiro>/ficheiro.swp


Não se esqueça de repetir os passos necessários para a activação.

Após o problema resolvido, pode desactivar o ficheiro e eliminá-lo, se assim o desejar.