LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Error while loading shared libraries - wrong ELF class: ELFCLASS32 (https://www.linuxquestions.org/questions/linux-newbie-8/error-while-loading-shared-libraries-wrong-elf-class-elfclass32-4175491402/)

CowboyRT 01-15-2014 01:15 PM

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.

AwesomeMachine 01-16-2014 07:16 AM

I think your libc is the incorrect architecture for the program you're installing.

johnsfine 01-16-2014 07:35 AM

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
file -L /lib/libm.so.6

etc.

Quote:

Originally Posted by CowboyRT (Post 5098660)
I am attempting to install a 32-bit application and I'm getting the error below during the application install.

Does this installer recompile the application from source? And if so, what about the application is "32-bit".

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
before launching the installer (from the same shell in which you did that export). But many installers are different and could require a different way to inject -m32 (or I might be entirely wrong in my guess that anything is getting compiled).

CowboyRT 01-16-2014 02:19 PM

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

suicidaleggroll 01-16-2014 02:24 PM

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
and any others you might need.

CowboyRT 06-24-2014 12:00 PM

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.