Como compilar o toolchain do gcc com o sysroot especial corretamente?

2

Eu tentei compilar um novo gcc , incluindo binutils e glibc . Como não posso ser root, quero instalar tudo em ~/local . Eu configuro essas variáveis:

PREFIX=~/local && export PREFIX
PATH=~/local/bin:$PATH && export PATH

Eu criei binutis , gcc e glibc (exatamente nesta ordem), com essa configuração:

../binutils-2.22/configure --prefix=$PREFIX --with-sysroot
../gcc-4.7.3/configure --prefix=$PREFIX
CC='gcc --sysroot=~/local' ../glibc-2.15/configure  --prefix=$PREFIX

Minha idéia era que eu primeiro compilasse binutils , depois compilasse um gcc que está vinculado aos novos binutils e, finalmente, os dois compilariam glibc (sem precisar do glibc do% do meu sistema/usr/lib).

No entanto, depois que binutils e gcc foram compilados e instalados corretamente, gcc falha ao compilar um programa simples durante a configuração de glibc :

int main() { return 0; }

Saída (encurtada):

> gcc --sysroot=~/local/ test.cpp -o test
ld: cannot find crt1.o: No such file or directory
ld: cannot find crti.o: No such file or directory
ld: cannot find -lc
ld: cannot find crtn.o: No such file or directory

No entanto, isso não exibe arquivos:

find ~/local -name crti.o

Eu configurei algo errado?

Meu sistema é um servidor rodando um Ubuntu 12.04 de 64 bits ("preciso"), mas acho que não está relacionado ao sistema. As versões dos três componentes toolchain devem se encaixar, já que o openSuSE 12.2 possui essa combinação.

    
por Johannes 25.11.2013 / 13:26

1 resposta

1

Você deve adicionar libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes ao comando configure do glibc para evitar configurar a tentativa de criar e executar programas de teste e sufocá-lo. O problema é que os arquivos crt1.o , crti.o , libc.{a,so} e crtn.o fazem parte da biblioteca glibc que você ainda não instalou.

Aprendizado no Linux From Scratch: artigo na glibc

    
por 21.05.2017 / 04:23