This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Symbol versioning problem? Different versions of same symbol being called.
On Thu, Jan 24, 2002 at 07:25:23PM +0100, Carlo Wood wrote:
>
> 4) Linking semwrapper.o --> libcwd.so.0.99.16 libcwd.so
> =======================================================
>
> # mv -f semwrapper.o semwrapper.lo
> # gcc-3.0.3 -shared threading.lo elf32.lo bfd.lo debug.lo debugmalloc.lo demangle.lo demangle3.lo semwrapper.lo strerrno.lo type_info.lo -Wl,--whole-archive utils/.libs/libutils.al -Wl,--no-whole-archive utils/.libs/libutils.al -ldl -Wl,-soname -Wl,libcwd.so.0 -o .libs/libcwd.so.0.99.16 -v -save-temps
> Reading specs from /usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3/specs
> Configured with: /usr/src/gcc/gcc-3.0.3/configure --prefix=/usr/local/gcc-3.0.3 --enable-shared --with-gnu-as --with-gnu-ld --enable-languages=c++ --enable-debug --enable-threads
> Thread model: posix
> gcc version 3.0.3
> /usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3/collect2 -m elf_i386 -shared -o .libs/libcwd.so.0.99.16 /usr/lib/crti.o /usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3/crtbeginS.o -L/usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3 -L/usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3/../../.. -rpath /usr/local/gcc-3.0.3/lib: threading.lo elf32.lo bfd.lo debug.lo debugmalloc.lo demangle.lo demangle3.lo semwrapper.lo strerrno.lo type_info.lo --whole-archive utils/.libs/libutils.al --no-whole-archive utils/.libs/libutils.al -ldl -soname libcwd.so.0 -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/gcc-3.0.3/lib/gcc-lib/i686-pc-linux-gnu/3.0.3/crtendS.o /usr/lib/crtn.o
>
> As you see, -lc is present.
>
I know why. All threaded applications, include shared libraries, have
to be linked against -lpthread. Otherwise, you won't get the right
symbol version.
H.J.