I try to compile a new gcc, including binutils and glibc. Since I can not be root, I want to install it all in ~/local. I set these variables:
PREFIX=~/local && export PREFIX
PATH=~/local/bin:$PATH && export PATH
I built binutis, gcc and glibc (in exactly this order), with this configuration:
../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
My idea was that I'd first compile binutils, then compile a gcc which is linked with the new binutils, and finally, the two compile glibc (without need of my system's glibc of /usr/lib).
However, after binutils and gcc were compiled and installed correctly, gcc fails to compile a simple program while configuring glibc:
int main() { return 0; }
Output (shortened):
> 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
However, this displays no files:
find ~/local -name crti.o
Did I configure anything wrong?
My system is a server running a 64 bit Ubuntu 12.04 ("precise"), but I think it is not system related. The versions of the three toolchain components should fit each other, since openSuSE 12.2 has this combination.
clangand the latestglibc. This post was quite useful for me: stackoverflow.com/a/851229/184968.crti.ois not existing (I've updated this in my post).~but$HOMEin yourPREFIXandPATH, e.g.export PATH=$HOME/local/bin:$PATH