Ken Moffat wrote:
> On Sun, Jan 08, 2012 at 11:20:33PM +0000, Matt Burgess wrote:

>> Seriously though, I would like to see LFS consider removing as many
>> static libs as possible.  If nothing else, it helps massively in keeping
>> systems secure as you only have to upgrade the *1* copy of the
>> compromised library rather than trawl through logs to see what packages
>> brought in a copy of the static library.  It also helps with the usual
>> shared library advantages of only having one copy loaded and one copy on
>> disk, though the performance and space benefits are admittedly probably
>> negligible on today's machines.

> I'm all in favour.  Following suggestions from Andy, my base lfs
> is down to libc_nonshared, libg, libieee, libm, libpthread_nonshared,
> librpcsvc, libsupc++ for static libs in /usr/lib.  I've also got
> static libs in /usr/lib/gcc : libgcc, libgcc_eh, libgcov - I presume
> only gcc will find it easy to use those.
> 
> From time to time I've stepped in and deleted libraries when I'm
> sure they're not needed.  Meanwhile, I rename them to {,.hidden}
> until I'm sure I don't need them - still got a load of those from
> the toolchain, but I've now built enough to know I don't need them.
> [ in my toolkit is a function to list all .a files in /usr/lib,
> remove those above from the list, and then rename the rest ]
> 
> I'm sure some people developing code prefer static libs.

The reason a developer would want a static library is that he would be 
reasonably sure that someone changing a dynamic library will not break 
the application.  Trying to trace a problem that pops up in program xxx 
because of a change in yyy.so is, at a minimum, very difficult.

> If we do get rid of these, there is some fun and games for libz in
> module-init-tools and for libcrypt in sysvinit (Andy had a
> suggestion, but since it's from glibc I've left it as hidden and
> just rename it during the sysvinit build).
> 
> Also, we forcibly install a libiberty.h header in binutils, as well
> as libiberty.a (I thought we force installed the lib, but I was
> wrong).  Last time I looked, it seemed that all packages which need
> libiberty should ship with their own version.

I'm not sure I agree.  Checking a version of RHEL, there are 193 static 
libraries.  Ubuntu has 78.  I think we may be chasing a solution without 
a problem.  I only remember one problem with static libs and IIRC that 
was several years ago (zlib).

I don't have a problem with a user removing unnecessary static libs, but
we shouldn't do it for them.  If upstream installs it by default, then 
so should we.

Perhaps a better place to address this is HLFS.

   -- Bruce
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to