Mailinglist Archive: opensuse (2234 mails)

< Previous Next >
Re: [SLE] err loading shlib libc.so.6: symbol not defined in ld-linux.so.2
  • From: aj@xxxxxxxxxxxxxxxxxxxxxx (Andreas Jaeger)
  • Date: 13 Sep 1999 07:55:07 +0200
  • Message-id: <u83dwjs6dg.fsf@xxxxxxxxxxxxxxxxxxxxxx>



>>>>> Derek Rees writes:

> I had a working SuSE 5.3 system, over which I just installed 6.2.
> Immediately following the install/upgrade, the new system is
> tested but fails to start.

> The failure is:
> error loading shared libraries /usr/i486-linux-libc6/lib/libc.so.6:
> symbol _dl_default_scope, version GLIBC_2.0 not defined in file
> ld-linux.so.2 with link time reference

Remove /usr/i486-linux-libc6 from /etc/ld.so.conf and run ldconfig again.

> SuSE's online Knowledge Base advised (for a related problem)
> running the emergency system and deleting certain of the shlibs,
> then reinstalling them through the upgrade procedure. The new
> system still fails to start, with the same errors.
You might want to remove the whole i486-linux-libc6 directory.

> The structure of my filesystem is:
> /dev/hda5 /
> /dev/hda6 /usr
> /dev/hda7 /home <- all user-created files are here only

> Thanks in advance for any help.

The problem you have is documented in the glibc FAQ 3.18:
3.18. After upgrading to glibc 2.1, I receive errors about
unresolved symbols, like `_dl_initial_searchlist' and can not
execute any binaries. What went wrong?

{AJ} This normally happens if your libc and ld (dynamic linker) are from
different releases of glibc. For example, the dynamic linker
/lib/ld-linux.so.2 comes from glibc 2.0.x, but the version of libc.so.6 is
from glibc 2.1.

The path /lib/ld-linux.so.2 is hardcoded in every glibc2 binary but
libc.so.6 is searched via /etc/ld.so.cache and in some special directories
like /lib and /usr/lib. If you run configure with another prefix than /usr
and put this prefix before /lib in /etc/ld.so.conf, your system will break.
[...]

You can even call the dynamic linker by hand if everything fails. You've
got to set LD_LIBRARY_PATH so that the corresponding libc is found and also
need to provide an absolute path to your binary:

LD_LIBRARY_PATH=<path-where-libc.so.6-lives> \
<path-where-corresponding-dynamic-linker-lives>/ld-linux.so.2 \
<path-to-binary>/binary

For example `LD_LIBRARY_PATH=/libold /libold/ld-linux.so.2 /bin/mv ...'
might be useful in fixing a broken system (if /libold contains dynamic
linker and corresponding libc).

Andreas

--
Andreas Jaeger aj@xxxxxxxxxxxxxxxxxxxxxx jaeger@xxxxxxxxxxxxxxxxxxxx
for pgp-key finger ajaeger@xxxxxxxxxxxxxxxxxxxx

--
To unsubscribe send e-mail to suse-linux-e-unsubscribe@xxxxxxxx
For additional commands send e-mail to suse-linux-e-help@xxxxxxxx
Also check the FAQ at http://www.suse.com/Support/Doku/FAQ/


< Previous Next >