PeeWeeLinux 0.61 with glibc 2.2.5 on PC/104. Problems with libc.so.6

Jul 02, 2003 3 Replies

Hi



I'm currently trying to port a PeeWeeLinux 0.61, a Java Runtime Environment IBM-Java2-JRE-1.3.1 and a Tomcat Webserver to a PC/104 board.



IBM-Java2-JRE-1.3.1 requires at least glibc 2.2.4. I've replace the files of glibc 2.1.3 of the PeeWeeLinux 0.61 with files from glibc



2.2.5.

When trying to boot the PC/104 board I get the following message: : error in loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory



libc.so.6 is located in /lib



Can anybody help?



Roger


It may be looking at /lib/i686 (or lower depending on your proc). That's where it is on my RH box. On your host machine, try applying: objdump -x | grep RPATH to the binaries you installed.

Eric ---------------------------------------- firstname dot lastname at jaluna dot com www.jaluna.com

My Proc is 486 /lib/ix86 does not exist on PeeWeeLinux

Contents of /lib of PeeWeeLinux 0.61:

ld-2.1.3.so ld-linux.so.2 -> ld-2.1.3.so libBrokenLocale-2.1.3.so libBrokenLocale.so.1 -> libBrokenLocale-2.1.3.so libNoVersion-2.1.3.so libNoVersion.so.1 -> libNoVersion-2.1.3.so libc-2.1.3.so libc.so.6 -> libc-2.1.3.so libcrypt-2.1.3.so libcrypt.so.1 -> libcrypt-2.1.3.so libdl-2.1.3.so libdl.so.2 -> libdl-2.1.3.so libm-2.1.3.so libm.so.6 -> libm-2.1.3.so libnss_dns-2.1.3.so libnss_dns.so.2 -> libnss_dns-2.1.3.so libnss_files-2.1.3.so libnss_files.so.2 -> libnss_files-2.1.3.so libpthread-0.8.so libpthread.so.0 -> libpthread-0.8.so libresolv-2.1.3.so libresolv.so.2 -> libresolv-2.1.3.so libtermcap.so.2 -> libtermcap.so.2.0.8 libtermcap.so.2.0.8 libutil-2.1.3.so libutil.so.1 -> libutil-2.1.3.so

Contents of /lib were replace by the following libraries of glibc

2.2.5:

ld-linux.so.2 libBrokenLocale.so.1 libc.so.6 libcrypt.so.1 libdl.so.2 libm.so.6 libnss_dns.so.2 libnss_files.so.2 libpthread.so.0 libresolv.so.2 libutil.so.1

objdump -x libc.so.6 | grep RPATH gives no output.

Do I have to set RPATH somewhere, although /lib is the default directory for libraries?

Roger

Roger,

Here's what I'd do:

- start with a fresh install of the distribution and check that it boots

- add the additionnal programs, one at a time, and check the system boots after each addition

- when you have found the program "foo" that fails, run it through ldd and objdump on the system you've copied it from:

$ ldd foo [result] $ objdump -x foo [result]

ldd shows the exact path of the libraries that "foo" depends on, on the host system. These libraries depend both on some definitions inside "foo", and on the way the host system is installed. It may be that you have several instances of libc.so.6 and only one provides the version that foo requires. On doubt, ldconfig may also provide some hints:

$ ldconfig -p | grep libc.so.6 libc.so.6 (libc6, hwcap: 0x8000000000000, OS ABI: Linux 2.4.1) =>

/lib/i686/libc.so.6 libc.so.6 (libc6, OS ABI: Linux 2.2.5) => /lib/libc.so.6

(redhat 8.0) shows that the one in lib/`uname -m` has a specific hardware definition, and supports a more recent ABI.

objdump shows foo's definitions, especially the exact libs that it depends on, as well as the RPATH/RUNPATH fieds (see "man ld.so" for explanations). It may be (though it is bad practice) that a shared object dependency is included as a complete path.

Hope this helps,

Eric

---------------------------------------- firstname dot lastname at jaluna dot com

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required