Error while loading shared libraries - wrong ELF class: ELFCLASS32
I am currently running CentOS 6.5 64-bit. I am attempting to install a 32-bit application and I'm getting the error below during the application install.
error while loading shared libraries: libc.so.6: wrong ELF class: ELFCLASS32 /tmp/eiecho: error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory. /tmp/eipath: error while loading shared libraries: libm.so.6: cannot open shared object file: No such file or directory. ------ # ldd /tmp/eiecho linux-gate.so.1 => (0x00bac000) libicuuc.so.20 => not found libicui18n.so.20 => not found libicudata.so => not found libm.so.6 => /lib/libm.so.6 (0x00bcd000) libdl.so.2 => /lib/libdl.so.2 (0x00d95000) libc.so.6 => /lib/libc.so.6 (0x005c8000) /lib/ld-linux.so.2 (0x005a6000) # ldd /tmp/eipath linux-gate.so.1 => (0x00a62000) libicuuc.so.20 => not found libicui18n.so.20 => not found libicudata.so => not found libm.so.6 => /lib/libm.so.6 (0x00215000) libdl.so.2 => /lib/libdl.so.2 (0x00fa7000) libc.so.6 => /lib/libc.so.6 (0x005c8000) /lib/ld-linux.so.2 (0x005a6000) # find / -name "libc.so.6" -print /lib64/libc.so.6 /lib/libc.so.6 /lib/i686/nosegneg/libc.so.6 # find / -name "libm.so.6" -print /lib64/libm.so.6 /lib/libm.so.6 /lib/i686/nosegneg/libm.so.6 #ls -l /lib64/libc.so.6 /lib/libc.so.6/ lib/i686/nosegneg/libc.so.6 lrwxrwxrwx. 1 root root 12 Jan 13 13:55 /lib64/libc.so.6 -> libc-2.12.so lrwxrwxrwx. 1 root root 12 Jan 14 15:41 /lib/i686/nosegneg/libc.so.6 -> libc-2.12.so lrwxrwxrwx. 1 root root 17 Jan 14 19:27 /lib/libc.so.6 -> /lib/libc-2.12.so lrwxrwxrwx. 1 root root 12 Jan 13 13:55 /lib64/libc.so.6 -> libc-2.12.so lrwxrwxrwx. 1 root root 12 Jan 14 15:41 /lib/i686/nosegneg/libc.so.6 -> libc-2.12.so lrwxrwxrwx. 1 root root 17 Jan 14 19:27 /lib/libc.so.6 -> /lib/libc-2.12.so #ls -l /lib64/libm.so.6 /lib/libm.so.6 /lib/i686/nosegneg/libm.so.6 lrwxrwxrwx. 1 root root 12 Jan 13 13:55 /lib64/libm.so.6 -> libm-2.12.so lrwxrwxrwx. 1 root root 12 Jan 14 15:41 /lib/i686/nosegneg/libm.so.6 -> libm-2.12.so lrwxrwxrwx. 1 root root 17 Jan 14 19:26 /lib/libm.so.6 -> /lib/libm-2.12.so lrwxrwxrwx. 1 root root 12 Jan 13 13:55 /lib64/libm.so.6 -> libm-2.12.so lrwxrwxrwx. 1 root root 12 Jan 14 15:41 /lib/i686/nosegneg/libm.so.6 -> libm-2.12.so lrwxrwxrwx. 1 root root 17 Jan 14 19:26 /lib/libm.so.6 -> /lib/libm-2.12.so # find / -name "libm-2.12.so" -print /lib64/libm-2.12.so /lib/libm-2.12.so /lib/i686/nosegneg/libm-2.12.so # ls -l /lib64/libm-2.12.so /lib/libm-2.12.so /lib/i686/nosegneg/libm-2.12.so -rwxr-xr-x. 1 root root 599384 Nov 21 16:38 /lib64/libm-2.12.so lrwxrwxrwx. 1 root root 18 Jan 14 15:41 /lib/i686/nosegneg/libm-2.12.so -> ../../libm-2.12.so -rwxr-xr-x. 1 root root 200024 Nov 21 16:13 /lib/libm-2.12.so # find / -name "libc-2.12.so" -print /lib64/libc-2.12.so /lib/libc-2.12.so /lib/i686/nosegneg/libc-2.12.so #ls -l /lib64/libc-2.12.so /lib/libc-2.12.so /lib/i686/nosegneg/libc-2.12.so -rwxr-xr-x. 1 root root 1926800 Nov 21 16:38 /lib64/libc-2.12.so -rwxr-xr-x. 1 root root 1923588 Nov 21 16:13 /lib/i686/nosegneg/libc-2.12.so -rwxr-xr-x. 1 root root 1910572 Nov 21 16:13 /lib/libc-2.12.so Thank you in advance for all assistance and responses. |
I think your libc is the incorrect architecture for the program you're installing.
|
It doesn't fit or explain the error messages you posted, but I think you should start by finding and installing the 32-bit RPMs that contain the three .so files reported by ldd as not found.
You should also use the file command on the relevant files to try to find the explanation for the error messages you posted: Code:
file -L /tmp/eiecho Quote:
The error messages you posted seem unlikely for most situations. One situation that fits those error messages is an application designed to recompile during install, but using build scripts that are incompatible with a 64-bit RH based distribution (maybe it wouldn't recompile correctly on any 64-bit distribution, or maybe it recompiles correctly as a 64-bit application on Debian based distributions but not RH based). If that is the case, there is someplace (such as an environment variable) where you can inject the -m32 option to make it recompile as 32-bit instead of recompiling (as I'm guessing it does now) as broken 64-bit. Without more details of what the installer is doing, I don't want to make many guesses about how to put in the -m32. In the simplest cases that would be done by using the command Code:
export CCFLAGS=-m32 |
Thanks AwesomeMachine and johnsfine.. Is this looking like a library issue? I got the same resuls on CentosOS 6.5 32bit when installing the application. The commands below are output from the 6.5 32 bit server.
# file -L /tmp/eiecho /tmp/eiecho: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped # file -L /lib/libm.so.6 /lib/libm.so.6: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped |
You have installed the necessary 32-bit libraries on your 64-bit system, yes? It looks from your finds that you have, but just making sure.
Code:
yum install glibc.i686 |
AwesomeMachine was correct. It was the wrong architecture of libraries and the incorrect version of libraries.
|
All times are GMT -5. The time now is 05:32 AM. |