Linux systems commonly use libc-5 as their main libc. This is the version which introduced ELF to Linux, and most distributions still come with it. Glibc-2 , aka. libc-6, is the way of the future for Linux. Regrettably, it is not 100% compatible with libc-5; though the problems are minor, many packages are not yet upgraded to compile cleanly with the new libc. Also, you must keep libc-5 around until all your dynamically linked applications are recompiled against libc-6.
What I wanted to achieve was the creation of an easy-to-use compilation environment, which would allow me to compile applications with either libc-5 or libc-6 without having to modify Makefiles or add command-line arguments to the compiler. I also wanted to do this by compiling all sources myself, and without using any binary distributions. Finally, I wanted to use some nice names for the libc-5 and libc-6 targets.
If you follow the steps in this document, you will get a system that has libc-6 as an additional target. You can compile for this target by changing your PATH. One of the following lines will be enough to start compiling for libc-6; you won't have to change a single Makefile.
setenv PATH /usr/i486-linux-libc6/bin:"$PATH"