Dynamic linker

Peter Mazinger ps.m at gmx.net
Thu Mar 24 00:39:05 UTC 2011


Hi Bruce,

running LDFLAGS="-Wl,-z,defs" ./configure could do it

Peter

-------- Original-Nachricht --------
> Datum: Wed, 23 Mar 2011 22:41:44 +0000
> Von: bruce bushby <bruce.bushby at gmail.com>
> An: Joakim Tjernlund <joakim.tjernlund at transmode.se>
> CC: vapierfilter at gmail.com, "uclibc at uclibc.org" <uclibc at uclibc.org>
> Betreff: Re: Dynamic linker

> Hi Joakim
> 
> >>>Yes, but probably doesn't link with it?
> >>>do a readelf -d libreadline.so.6, see ncurses it listed in NEEDED:
>  >>>0x00000001 (NEEDED)                     Shared library:
> [libncurses.so.5]
>  >>>0x00000001 (NEEDED)                     Shared library: [libc.so.6]
> 
> Thanks for the example....dare I say you've hit the proverbial nail?
> 
> Only difference when compared to your example is....my "libreadline"
> doesn't
> even know about "libncurses"?
> 
> libreadline:
> [root at dlxarm01 buildroot]# readelf -d
> ./output/target/usr/lib/libreadline.so.6.1 | grep "]"
>  0x00000001 (NEEDED)                     Shared library: [libc.so.0]
>  0x0000000e (SONAME)                     Library soname:
> [libreadline.so.6]
>  0x0000000f (RPATH)                      Library rpath: [/usr/lib]
> [root at dlxarm01 buildroot]#
> 
> Python's lib-dynload/libreadline.so:
> [root at dlxarm01 buildroot]# readelf -d
> ./output/target/usr/lib/python2.7/lib-dynload/readline.so | grep "]"
>  0x00000001 (NEEDED)                     Shared library:
> [libreadline.so.6]
>  0x00000001 (NEEDED)                     Shared library: [libncurses.so.5]
>  0x00000001 (NEEDED)                     Shared library: [libc.so.0]
> [root at dlxarm01 buildroot]#
> 
> libncurses:
> [root at dlxarm01 buildroot]# readelf -d
> ./output/target/usr/lib/libncurses.so
> | grep "]"
>  0x00000001 (NEEDED)                     Shared library: [libc.so.0]
>  0x0000000e (SONAME)                     Library soname: [libncurses.so.5]
> [root at dlxarm01 buildroot]#
> 
> 
> I checked my linux laptop (Fedora 13):
> [bruce at laptop ~]$ readelf -d /lib64/libreadline.so.6.1 | grep "]"
>  0x0000000000000001 (NEEDED)             Shared library: [libtinfo.so.5]
> <----- I think this is correct
>  0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
>  0x000000000000000e (SONAME)             Library soname:
> [libreadline.so.6]
> [bruce at laptop ~]$
> 
> 
> So ....if I understand things correctly ......"readelf -d
> ./output/target/usr/lib/libncurses.so" shows that
> "readline" is not linking properly when compiled....even though "ncurses"
> was defined as a dependency or if I manually build/install ncurses first.
> 
> @Peter: Thanks for the linking options, would I be able to implement them
> using a patch? What file would I patch....the "readline" Makefile?
> 
> Thanks again to everybody for the help!
> 
> Bruce
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Wed, Mar 23, 2011 at 8:07 PM, Joakim Tjernlund <
> joakim.tjernlund at transmode.se> wrote:
> 
> > bruce bushby <bruce.bushby at gmail.com> wrote on 2011/03/23 20:19:06:
> > >
> > > Over the past two weeks I've tried many variations, unfortunately
> without
> > any success.
> > >
> > > I've tried building on these platforms:
> > > Fedora 12
> > > Fedora 14
> > > Ubuntu Natty 11.04
> > >
> > > Buildoot:
> > > buildroot-dailysnapshot
> > > buildroot-2011-02
> > >
> > > uclibc:
> > > 0.9.31
> > > 0.9.32-rc2
> > >
> > > Building "readline" without "ncurses" and with the dependency on
> > "ncurses" removed:
> > > [root at dlxarm01 buildroot]# grep -i tgetent
> > make-readline-without-ncurses.log
> > > checking for tgetent... no
> > > checking for tgetent in -ltermcap... no
> > > checking for tgetent in -ltinfo... no
> > > checking for tgetent in -lcurses... no
> > > checking for tgetent in -lncurses... no
> > > [root at dlxarm01 buildroot]#
> > >
> > > BUT....readline still compiles.....this could be due to the fact that
> I
> > am unable to run "autoreconf" when building "readline"?
> > >
> > > I then run "make ncurses" and then re-run "make readline" to see if
> it's
> > uses "ncurses" for "tgetent":
> > > [root at dlxarm01 buildroot]# grep -i tgetent
> > make-readline-with-ncurses.log
> > > checking for tgetent... no
> > > checking for tgetent in -ltermcap... no
> > > checking for tgetent in -ltinfo... no
> > > checking for tgetent in -lcurses... yes
> > > [root at dlxarm01 buildroot]#
> > >
> > > So "readline" does find "ncurses".
> >
> > Yes, but probably doesn't link with it?
> > do a readelf -d libreadline.so.6, see ncurses it listed in NEEDED:
> >  0x00000001 (NEEDED)                     Shared library:
> [libncurses.so.5]
> >  0x00000001 (NEEDED)                     Shared library: [libc.so.6]
> >
> > >
> > > My Fedora 12 X64 desktop uses "termcap" rather then "ncurses":
> > > [bruce at core readline-6.2]$ ./configure | grep -i tgetent
> > > checking for tgetent... no
> > > checking for tgetent in -ltermcap... yes
> > > [bruce at core readline-6.2]$
> > >
> > > I will try and add "readelf" to my build and forward the results of
> > checking "libreadline" and "libncurses"
> > >
> > > I really appreciate the help!
> > >
> > > I've been stuck for so long now I thought of offering a $200.00 reward
> to
> > anybody who can fix it.
> > >
> > > Bruce
> > >
> > > On Wed, Mar 23, 2011 at 6:15 PM, Joakim Tjernlund <
> > joakim.tjernlund at transmode.se> wrote:
> > > vapierfilter at gmail.com wrote on 2011/03/23 18:57:04:
> > > >
> > > > On Wed, Mar 23, 2011 at 1:19 PM, Joakim Tjernlund wrote:
> > > > > From: Salvatore CRO <salvatore.cro at st.com>
> > > > >> We have been looking at the same problem in the last days...
> > > > >> Libreadline needs either libncurses or libtermcap to provide
> these
> > symbols.
> > > > >> Even though one of the two is supposed to be linked to
> libreadline
> > (depending on
> > > > >> Certain logic in its build configure), it seems this is not
> actual
> > the case.
> > > > >> We'll keep investigating into libreadline package configure.
> > > > >
> > > > > Unless someone changed this, uClibc needs to have either
> > > > > libncurses or libtermcap linked to readline(needs to be in
> > > > > readline's NEEDED list) or uClibc will fail. glibc doesn't require
> > this, but I believe the specs says that all deps should be listed.
> > > >
> > > > i'm pretty sure that's the intended behavior we still have.  i
> wonder
> > > > if we should FAQ this ...
> > > > -mike
> >
> > > Yes, since this is not the first time this problem has happened.
> > >
> > >  Jocke
> >
> >
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://lists.busybox.net/mailman/listinfo/uclibc

-- 
GMX DSL Doppel-Flat ab 19,99 Euro/mtl.! Jetzt mit 
gratis Handy-Flat! http://portal.gmx.net/de/go/dsl


More information about the uClibc mailing list