Quote:
Hi
Thanks for your reply. I did ldd -r /lib/libc.so.6 here is output I got.
bash-3.1# ldd -r /lib/libc.so.6
/lib/ld-linux.so.2 (0xb7eff000)
linux-gate.so.1 => (oxffffe000)
Is this what you wanted to look at. libc.so.6 looks like some binary file. When I observe less /lib/libc.so.6 I observe the binary content. Please advice.
|
/lib/libc.so.6 is actually a library that can be run like a normal program, so you can run it like:
I am not familiar with newer versions of Slackware, I only run it on an old laptop that cannot handle anything more recent.
Unfortunately, it seems that that you are stuck with a NPTL/TLS-only glibc. If you run "readelf -s /lib/libc.so.6 | grep errno@@" you can see the developers made it a private symbol (eg @@GLIBC_PRIVATE instead of @@GLIBC_2.0) because declaring errno is not thread-safe and TLS glibc uses threading internally.
You need to use a LinuxThreads glibc to run this application. Any distribution using glibc 2.3 and below are almost guaranteed to have LinuxThreads compiled in. Your choices are:
Install an older Linux distribution and use LD_ASSUME_KERNEL=2.4.1 to force LinuxThreads.
Setup a chroot on your existing Slackware system with an older release of a distribution.
Or create a directory with the necessary old libraries and use LD_LIBRARY_PATH to force the linker to load those libraries preferentially.
I don't know where you installed the program but something like (replace /dir/where_installed) :
Code:
find /dir/where_installed | xargs file | grep "dynamically" | awk '{print $1}' | tr -d : | xargs ldd | grep -F .so | awk '{print $1}' | sort -u > libraries-needed
should find all the required libraries that you need in order to run the program.
If you just try to replace glibc, other libraries will complain about GLIBC_2.7 and GLIBC_2.4, so you need every library to be contemporary.