Como construir o gcc dentro de um chroot Debian?

3

Eu usei debootstrap para configurar um sistema Debian mínimo (x86):

debootstrap wheezy /var/chroot http://ftp.debian.org/debian/

Então eu entrei no chroot e instalei alguns pacotes:

apt-get install build-essential m4 flex bison libgmp-dev libmpfr-dev

Estou tentando criar o gcc 4.1.3 (não pergunte por quê). Eu configurei da seguinte forma:

./configure --prefix=/usr/local --program-suffix=-4.1.3 --enable-languages=c,c++

Funcionou por alguns minutos e depois falhou com erros como:

In file included from /usr/include/stdio.h:28,
                 from ../.././gcc/tsystem.h:90,
                 from ../.././gcc/crtstuff.c:68:
/usr/include/features.h:323:26: error: bits/predefs.h: No such file or directory
/usr/include/features.h:356:25: error: sys/cdefs.h: No such file or directory
/usr/include/features.h:388:23: error: gnu/stubs.h: No such file or directory
In file included from ../.././gcc/tsystem.h:90,
                 from ../.././gcc/crtstuff.c:68:
/usr/include/stdio.h:36:25: error: bits/types.h: No such file or directory
In file included from ../.././gcc/tsystem.h:90,
                 from ../.././gcc/crtstuff.c:68:

No entanto, não tenho problemas para criar um programa pequeno que use stdio.h . Então eu posso compilar coisas, mas não o gcc, aparentemente.

Que instalação / configuração adicional deve ser feita ao chroot para possibilitar a construção do gcc?

    
por Brian Bi 05.07.2014 / 16:40

1 resposta

3

Consegui concluir a construção após a configuração:

export LIBRARY_PATH=/usr/lib/i386-linux-gnu
export C_INCLUDE_PATH=/usr/include/i386-linux-gnu
export CPLUS_INCLUDE_PATH=/usr/include/i386-linux-gnu

Edit: percebo agora a origem do problema. O gcc que vem com o sistema sabe procurar em diretórios como /usr/include/i386-linux-gnu . No entanto, o gcc que eu construo não pesquisa nesses diretórios. Consequentemente, a compilação falha no stage2.

Parece que o gcc não tem nenhuma opção de configuração que permita definir os caminhos de pesquisa de cabeçalho e biblioteca, então estou supondo que o gcc-4.1 é muito antigo (antes do advento do esquema multiarch do Debian) e mais recente versões todas já sabem pesquisar em /usr/include/<target> e assim por diante.

    
por 05.07.2014 / 18:26