[uClibc]directfb pthread linking problems

Alex SONG zzaleson at uqconnect.net
Fri May 24 07:36:56 UTC 2002


On Thu, 23 May 2002, Erik Andersen wrote:

> On Thu May 09, 2002 at 12:35:02PM +1000, Alex Song wrote:
> > hi,
> >
> > from uclibc web site it said that directfb was supported. i tried this out
> > and got some pthread linking problems.
> >
> > i used both 0.9.9 and cvs versions of directfb and 0.9.11 and cvs versions
> > of uclibc. i enabled thread support in uclibc and the architecture is x86.
> > to compile directfb i changed my path and then ran configure and then make.
> >
> > after compiling directfb i did a ldd (the uclibc one) on the compiled
> > library and i get this:
> >
> >         libdl.so.0 => /usr/i386-linux-uclibc/lib/libdl.so.0
> >         libpthread.so.0 => /lib/libpthread.so.0
>
> The problem here is that both the uClibc and the system versions
> of libpthread have the exact same soname: libpthread.so.0.  It
> turns out that when I last updated the dynamic library loader to
> ensure it would always find and load the correct library, I
> forgot to update the ldd app to match.  Fixing that now,

i just updated from cvs and tried to build uclibc-directfb again and now
the uclibc-ldd crashes when i try to run it and normal ldd returns:

	/lib/libNoVersion.so.1 => /lib/libNoVersion.so.1 (0x4002d000)
	libdl.so.0 => not found
	libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40045000)
	libc.so.0 => not found
	libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

so it looks like it is still linking glibc's libpthread and not uclibc's.
the "not found" just means i haven't added the uclibc path to ld.so.conf.
this is with the latest cvs directfb and latest uclibc and i haven't tried
it with the uclibc toolchain, this was done by setting the path to
/usr/i386-linux-uclibc/bin

i tried the same compile except i set
LD_LIBRARY_PATH=/usr/i386-linux-uclibc/lib

the uclibc ldd outputed:
	libdl.so.0 => /usr/i386-linux-uclibc/lib//libdl.so.0
	libpthread.so.0 => /usr/i386-linux-uclibc/lib//libpthread.so.0
	libc.so.0 => /usr/i386-linux-uclibc/lib//libc.so.0
	(null) => (null)

where i "think" null => null should be the uclibc dynamic loader.

the normal ldd outputed:
	/lib/libNoVersion.so.1 => /lib/libNoVersion.so.1 (0x4002d000)
	libdl.so.0 => /usr/i386-linux-uclibc/lib/libdl.so.0 (0x40030000)
	libpthread.so.0 => /usr/i386-linux-uclibc/lib/libpthread.so.0
(0x40033000)
	libc.so.0 => /usr/i386-linux-uclibc/lib/libc.so.0 (0x40044000)
	libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

do you have any gut feelings to what is going on here ? directfb uses
automake, autoconf and libtool.

cheers,

alex




More information about the uClibc mailing list