[buildroot] $(STRIP) --strip-unneeded on a SHARED library...WHY?
Peter S. Mazinger
ps.m at gmx.net
Tue Dec 6 20:02:11 UTC 2005
On Tue, 6 Dec 2005, John Z. Bohach wrote:
> On Tuesday 06 December 2005 10:10, Mike Frysinger wrote:
> > On Tue, Dec 06, 2005 at 11:44:56AM -0500, Paul Fox wrote:
> > > > > -$(STRIP) --strip-unneeded $(TARGET_DIR)/lib/libdb*so*
> > > > >
> > > > > which is not fine, because all symbol information from the libraries
> > > > > is now removed, and whenever a linker tries linking against thusly
> > > > > stripped libraries, you get "undefined symbol..." errors.
> > > >
> > > > cant say ive had this issue before and as solar pointed out, we've
> > > > been using --strip-unneeded on *all* shared libraries for quite a long
> > > > time now without any linking issues
> > >
> > > we use --strip-unneeded too, and it's fine. but it's fine for
> > > runtime. is it perhaps the case that libraries stripped like
> > > that can no longer be used in development?
> >
> > no, because we're using it in Gentoo
> >
> > that means every single Gentoo user has every single shared library
> > stripped with --strip-unneeded
> >
> > i have yet to see a bug reported where someone was unable to link
> > against a library ... and since it's Gentoo, everytime a package is
> > installed, it's compiled and linked on every system
> > -mike
>
> Can't speak to gentoo, but I can tell you what I've observed myself when
> trying to build buildroot in a development environment built by buildroot.
> Once I commented out the 'strip'-ing of ncurses, berkelydb, etc., things like
> perl, 'make menuconfig' of buildroot itself, etc. all work. Otherwise,
> "undefined symbol ..." error. LFS chapter 5 comments on stripping static
> libraries:
>
> http://www.linuxfromscratch.org/lfs/view/stable/chapter05/stripping.html
>
> says don't do it.
>
> and also in Ch.6 it comments on --strip-all on all libraries:
>
> http://www.linuxfromscratch.org/lfs/view/stable/chapter06/strippingagain.html
>
> and specifically does '--strip-debug' on the libraries instead. Looking
> closely, however, there is no reference to 'strip-unneeded' on the libraries
> themselves (just binaries).
>
> This, combined with my own observed behavior, leads me to believe that the
> --strip-unneeded option on shared libraries is the root cause of the
> 'undefined symbol...' errors when linking against the shared libraries.
>
> I guess its possible that somehow the --strip-unneeded option to strip is
> broken under buildroot, but it doesn't seem likely. I run:
>
> $ nm libdb-4.3.so
why not try nm -D --defined-only libdb-4.3.so ?
>
> and get:
>
> nm: libdb-4.3.so: no symbols
>
> after its been '--strip-unneeded'-ed. Seems like the right root cause, unless
> 'strip' is broken?!
>
> If I run 'nm' on a not '--strip-unneeded'-ed version of libdb, or any other
> library, I get all the symbols, and linking is fine. Otherwise, link-time
> 'undefined symbol' errors.
>
> So if nobody else sees this behavior, then I'm really confused...
>
> Could someone else please try a 'strip --strip-unneeded' on a lib*.so, and
> see if you can still link against it afterwards, and what 'nm lib*.so'
> produces? Is this unique to buildroot devel. envs. only?
>
> (P.S.: I ran all this natively in a devel. env. created by buildroot...)
>
> --john
>
>
>
--
Peter S. Mazinger <ps dot m at gmx dot net> ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08 BB6E C389 975E A5F0 59F2
More information about the busybox
mailing list