On Sat, Aug 21, 2010 at 03:33:35PM +0100, Rui Paulo wrote: > > On 21 Aug 2010, at 15:23, Kostik Belousov wrote: > > > On Sat, Aug 21, 2010 at 03:16:49PM +0100, Rui Paulo wrote: > >> > >> On 21 Aug 2010, at 14:59, Kostik Belousov wrote: > >> > >>> On Sat, Aug 21, 2010 at 01:48:05PM +0000, Rui Paulo wrote: > >>>> Author: rpaulo > >>>> Date: Sat Aug 21 13:48:04 2010 > >>>> New Revision: 211561 > >>>> URL: http://svn.freebsd.org/changeset/base/211561 > >>>> > >>>> Log: > >>>> Link drti.o with a PIC version of libelf. This is needed because > >>>> drti.o depends on libelf and this avoids linking every other drti.o > >>>> program (namely programs with USDT probes) with libelf. > >>> What is wrong with having libelf as dependency of the resulting > >>> binary ? > >> > >> The resulting binary can be a library. If I add drti.o to the libthr > >> library, every other program will break because it can't find libelf > >> symbols. The only way to fix it would be to rebuild every program that > >> depends on libthr and I don't want that to happen. > > > > I do not understand this. If drti.o is added to a library, library should > > also record a dependency on libelf, i.e. be linked with it. Since you > > already modifying link command to add drti.o, what is the problem to > > add -lelf ? > > I wanted the same steps to be done in FreeBSD as in Solaris. I.e., in > I Solaris you don't need to link with -lelf your program after you > I added DTrace probes to it believe this is a good tradeoff .
The drawbacks of linking library statically are, at least: - Wasted space. - Harder upgrade when libelf changes. Much harder for ports and hand- compiled programs. - The mess that happen when the binary also linked with -lelf, and either your drti.o is linked, or a library that linked with its dcrti.o. Pro argument seems to be that one less diff with Solaris code is needed. This is becoming rather long.
pgpIFggeasjyW.pgp
Description: PGP signature