Robert Connolly robert at linuxfromscratch.org
Sun Jan 23 08:24:21 PST 2005

Well. I checked this out a lot. With a patch to module-init-utils we could get 
rid of all the static libraries, except for Perl's. Perl runs a good 15% 
slower if its using libperl.so instead of libperl.a; Perl can't be completely 
dynamic because the Perl native dynamic loader is a static lib. Uhm, its 
sorta complicated to explain. DynaLoader.a can't be an .so, its bad karma. 
And since DynaLoader.a can't be dynamic, I figure why loose 15% performance 
with libperl.so. But, both of these libs are internal to Perl, libc.a doesn't 
need to exist for them, or any other static lib.

module-init-utils' insmod.static is a legacy item. No one can tell me why it 
needs to be statically linked. A simple hack can make it dynamic, so it links 
to zlib.so. And so zlib.a can be removed too.

Oh, and GCC needs a couple static libs too, to be able to compile stuff. 
Namely libgcc_eh.a and I think libgcc.a too. I'm not sure why, but things 
don't compile without them.

The whole point of this is so potentially vulnerable libs, like zlib, or 
openssl, never get statically linked into programs. So if/when we need to 
upgrade these in the future we can rest knowing nothing there's only 1 
package affected.

So, unless anyone objects, I want to start making changes to do this. Many 
packages don't support --disable-static, so the static libs would be removed 
from /usr/lib after make install. Its not pretty but its the only way that 
will work.


More information about the hlfs-dev mailing list