[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How does versioning work (was: Bug mixing old sem_wait and new pthread_
From: |
Erland Lewin |
Subject: |
How does versioning work (was: Bug mixing old sem_wait and new pthread_cond_broadcast) |
Date: |
Thu, 26 Apr 2001 20:11:41 +0200 |
I wrote:
>
> |> Hello,
> |>
> |> I think there is a bug in linuxthreads, when the same thread uses
> |> pthread calls from both the old calls and new calls (for instance, when
> |> one library was made with an older glibc).
Andreas Schwab replied:
> You can't do that. If you compile an application you must make sure all
> dependent libraries were compiled against the same version of glibc. We
> only guarantee run time compatibility, but not link time compatibility.
Thanks for the clarification. Perhaps this should be pointed out in the
documentation (or did I miss it?).
Wow. So that means, for instance, that I have to recompile X-windows
and all dependent libraries on my system if I want to program graphical
applications? That really makes upgrading glibc an enormous task.
But ok. I'm now trying to recompile all relevant libraries on my system,
but I find it difficult to understand how the versioning works.
For example, I tried to recompile a new version of glib (from gtk)
from scratch.
However, when I do (on the newly compiled libglib):
> ldd -v /usr/lib/libglib-1.2.so.0.0.9
libc.so.6 => /lib/libc.so.6 (0x40033000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x2aaaa000)
Version information:
/usr/lib/libglib-1.2.so.0.0.9:
libc.so.6 (GLIBC_2.1.2) => /lib/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
/lib/libc.so.6:
ld-linux.so.2 (GLIBC_2.1.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.2) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
I was expecting to see libc.so.6 (GLIBC_2.2) under the version
information for libglib-1.2.so.0.0.9. How should this look?
Is there any documentation on how the output from ldd -v should be
interpreted?
Why is it not there?
Is the library not linked against the latest GLIBC?
Why are two versions of libc.so.6 listed under libglib-1.2.so.0.0.9?
How does the system determine which versions are required for a given
library?
Can I get the linker to warn if inconsistent glibc versions are used
in a binary/shared library?
Thankful for any enlightenments you can offer,
Erland