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.