can't resolve symbol '__xstat'

can't resolve symbol '__xstat'

Post by Maxime Caye » Mon, 19 Oct 1998 04:00:00



I recently re-installed my system from scratch (redhat 5.1, kernel 2.0.35,
and KDE). Since the re-installation I can not run some X application like
netscape or "mxaudio" for example...

I Always get the message "can't resolve symbol '__xstat'".

Anybody have an idea where to look for that problem ?

Maxime Cayen
http://maxime.ml.org


 
 
 

can't resolve symbol '__xstat'

Post by Derek B. Noonbu » Fri, 23 Oct 1998 04:00:00



> I was hoping someone else would respond by now, but I'll tell you how I
> solved this problem... I found a posting from someone else who had this
> problem and who said she solved it by switching around a few lines in the
> /etc/ld.so.conf file (and then ran ldconfig).  It apparently has something to
> do with the libraries.     By switching around these lines, you cause Linux to
> search through the directories in a different order.  In my computer, it
> found a better copy of whatever library it's looking for and therefore didn't
> return the error message.  I still don't know which library file(s) are
> faulty, though...



> > I recently re-installed my system from scratch (redhat 5.1, kernel 2.0.35,
> > and KDE). Since the re-installation I can not run some X application like
> > netscape or "mxaudio" for example...

> > I Always get the message "can't resolve symbol '__xstat'".

I just ran into this after upgrading from RedHat 4.2 to 5.1.

Here's what I *think* is going on...  The default library search path
(as installed by RedHat 5.1) puts /usr/X11R6/lib before
/usr/i486-linux-libc5/lib.  So an X application will get the new
version of libX11 (from /usr/X11R6/lib) and the old libc5.  The new
libX11 expects to be linked against libc6, not libc5, and it
references some symbols ('__xstat') that aren't in libc5.

If you switch those two directories in ld.so.conf, you get the old
version of libX11 (from /usr/i486-linux-libc5/lib) and the old libc5,
which works fine.  The problem here is that when you run a *new* X
application, it also gets the old libX11, and both libc5 and libc6
(??? - at least that's what ldd says).  So some new X apps won't
work.

Here's my solution...  Get the latest libc5 version:
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/libc-5.4.46.bin.tar.gz
Copy libc.so.5.4.46 and libm.so.5.0.9 into /usr/i486-linux-libc5/lib.
Change the libc.so.5 and libm.so.5 links to point to these new files.
Make sure ld.so.conf lists /usr/X11R6/lib *before*
/usr/i486-linux-libc5/lib.  Run ldconfig.

It looks like the later libc5 versions added some stuff to make them
compatible with libc6 (glibc).

- Derek

 
 
 

can't resolve symbol '__xstat'

Post by jongarmpar » Sat, 24 Oct 1998 04:00:00



>> I Always get the message "can't resolve symbol '__xstat'".

Hmm.. I think I'm very late.
But I'd like to tell you about similar situation to yours.

1. Hearder file version mismatch.
   Sometimes, when you compile programs, you may get :
   "method xxx is not defined in xxx structure."

   or similar things.
   It means you have wrong version of header files and required source
   files something like "stdio" or such things which are required basically.
   For more information, look at the error message carefully.

2. Library program.

   Just like the "can't resolve symbol..."..
   Symbols are stored in the compiled files, i.e. object files, and they
   make it possible to link to other object files which contain the function,
   or link to some location in itself.

   So, whenever you get similar error message, it can be assumed "header
   file version mismatch or library version mismatch.

Linux is quite sensitive, isn't it?
It would be good to be careful with termcap, and ncurses libraries, especially.

Regards.