[buildroot] $(STRIP) --strip-unneeded on a SHARED library...WHY?
John Z. Bohach
jzb at aexorsyst.com
Tue Dec 6 17:20:01 UTC 2005
On Tuesday 06 December 2005 08:44, 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?
>
BINGO. Executables that have been linked have addresses hardwired where the
symbols were. The library code didn't change, but '$(LD) ... -l{somelib}
...etc' won't find the symbols, and you'll get undefined symbol errors.
The most obvious side effect of this is try running a 'make menuconfig' of
buildroot in a self-hosted environment, i.e. one created by buildroot. Since
lib/libncurses*so* is stripped of symbols, you'll get undefined symbol
"libgettext_...' errors, etc.
> paul
> =---------------------
> paul fox, pgf at brightstareng.com
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://busybox.net/cgi-bin/mailman/listinfo/busybox
--
### Any similarity between my views and the truth is completely ###
### coincidental, except that they are endorsed by NO ONE ###
More information about the busybox
mailing list