how to run new software without updating GLIBC?

You can definitely compile a new version of GLIBC and have it stored in a separate directory. The first thing you'll have to do is download the version of glibc that you want from http://ftp.gnu.org/gnu/glibc/.

Run the configure script and set the --prefix= to something like /home/you/mylibs.

After you've managed to install it into that directory, you'll have to set your LD_LIBRARY_PATH to the location of the new glibc.

You'll need to figure out any dependencies you may need to compile. You can create a shell script that sets the LD_* variables and the runs your program (which you'd have to do anyway), and run it repeatedly - download/recompiling missing libs along the way.

You could also use ldd to determine what shared libraries the program needs, then use ldd on each of the libraries to find out if they require glibc.

This can be a very time consuming process and is not for the impatient or faint of heart - traversing/recompiling your way through the possible dependencies required to make your application work may occasionally make you want to pull out your hair.

Update 1:

I downloaded glibc-2.4 and tried to compile it on CentOS 6. To get configure working properly I had to change the ac and ld version checks by changing:

2.1[3-9]*)

to:

2.*)

at lines 4045 and 4106 in the configure file itself. I set my *FLAGS environment variables like so:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

and then executed ./configure --prefix=/home/tim/masochist. It configured properly... and it began building properly too... but then I started running into errors - mostly the compiler complaining about things being redefined.

At that point I gave up... Because it was becoming too time consuming. ;)

Tags:

Rhel

Glibc