Death by Dynamically linked libraries.
If you’re trying to run some binary and you’re getting errors about bad elf interpreter, you’re probably trying to run something compiled for 64 bit on a 32 bit machine, vice versa, or maybe ARM or ppc, etc.
The binary file was compiled with the dependency of one or more shared libraries. The libraries needed by the application you’re trying to execute are not included in the binary itself, they have to reside on your system.

When you execute a binary, somegui for example, ld-linux.so is the dynamic linker, and attempts to resolve the dependencies of somegui before passing control to somegui.
You can see which shared libraries a given binary is dependent on using ldd.
# ldd somegui
linux-gate.so.1 => (0×00110000)
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0×008aa000)
libesd.so.0 => /usr/lib/libesd.so.0 (0×008d7000)
libgnomesupport.so.0 => /usr/lib/libgnomesupport.so.0 (0×001e6000)
libgnome.so.32 => /usr/lib/libgnome.so.32 (0×001c9000)
libICE.so.6 => /usr/lib/libICE.so.6 (0×0716d000)
libSM.so.6 => /usr/lib/libSM.so.6 (0×07189000)
libgdk_imlib.so.1 => /usr/lib/libgdk_imlib.so.1 (0×00259000)
libart_lgpl.so.2 => /usr/lib/libart_lgpl.so.2 (0×0042f000)
libgnomeui.so.32 => /usr/lib/libgnomeui.so.32 (0×00441000)
libX11.so.6 => /usr/lib/libX11.so.6 (0×068ed000)
libXext.so.6 => /usr/lib/libXext.so.6 (0×069eb000)
libXi.so.6 => /usr/lib/libXi.so.6 (0×06b0e000)
libdl.so.2 => /lib/libdl.so.2 (0×00dcf000)
libglib-1.2.so.0 => /usr/lib/libglib-1.2.so.0 (0×0019d000)
These libraries need to be installed in these locations on your system. If they’re not found or they don’t match version or architecture, game over.
If you’re using FreeBSD or OpenBSD and see this message, you’re probably trying to run something built for Linux, but the BSD’s have their own C libraries, so this might be tricky. You could try QEMU to emulate the environment, but then you’re running it under Linux. There’s also the glibc freebsd port, but I think they only support limited architectures. Head over to the #gnu-kbsd channel on Freenode for more help.
That file comes from the package glibc. Make sure you have the right one installed. Try listing all the packages you have installed using rpm with the query format printing the architecture too. You might have the wrong architecture installed or perhaps no glibc at all.
$ sudo rpm -qa –qf “%{name}.%{arch}\n” | grep glibc
Perhaps you have ld-linux-x86-64.so.2 ?
$ ldconfig -p | grep ld-linux
ld-linux-x86-64.so.2 (libc6,x86-64) => /lib64/ld-linux-x86-64.so.2
I tried to install Skype (skype-2.1.0.81-fc10.i586.rpm), which is a 32-bit thing, onto my Fedora 14 64-bit system and ended up with the /lib/ld-linux.so.2 not found problem. It’s actually a broken link from /lib64. So, what to to? How to repair the broken link and maybe put the correct link so Skype can install? I know this isn’t a Skype forum, but is it a lib64/lib32 forum?
repoquery –whatprovides ld-linux.so.2
glibc-0:2.12.90-17.i686
glibc-0:2.12.90-19.i686
su
***
yum install glibc.i686
hope this helps.
2:12 am
Hello,
Thanks for your post, it was helpful but what if i get this error ELF interpreter /lib/ld-linux.so.2 not found under fedora?