I installed Mathematica 9 on an old Red Hat Enterprise Linux AS release 4 system.After the installation, I tried to start Mathematica, but following message came out:/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: version `GLIBC_2.4' not found (required by /home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libML64i3.so)/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: version `GLIBC_2.4' not found (required by /home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libQtCore.so.4)I don't want to update the system glibc, because it's risky and the administrator don't allow me to do that.Someone suggested that it is possible to just install new version of glibc somewhere else, and run the program asLD_LIBRARY_PATH=/lib/new your_applicationand this will not affect the system.So I am asking here if this method really works. And if it works, I want to know how to do it step by step (I lack experience in Linux right now, and want to use Mathematica on Linux as soon as possible). Edit:I noticed that there is a software called Ermine. It seems that it can deploy a software as standalone package which doesn't rely on the external environment. Unfortunately, it is a shareware. So I think since Ermine can do it, there must be a way to use new software on old system.
how to run new software without updating GLIBC?
rhel;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 lobs 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-smCXXFLAGS=${CFLAGS} CFLAGS=${CFLAGS} -freorder-blocks-and-partition export LDFLAGS CFLAGS CXXFLAGSand 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. ;)