Hi!

On Wed, May 13, 2009 at 03:34:17PM -0300, Joco Salvatti wrote:
>I've been working on a project to create a smaller, functional version
>of OpenBSD (50MB). One thing that I've noticed while carrying out this
>project is that there are four types of libraries, eg:

>libssl.a
>libssl.so.14.0
>libssl_p.a
>libssl_pic.a

>What I would like to know is why are there four different types of
>libraries? Since disk consumption is a
>severe constraint, I would like to know which of these are of
>paramount importance, mandatory for the proper
>system operation.

In general,
  libfoo.a
    Static library, normal build. Used only when you link a program
    against -lfoo and you either specify static linkage or there's
    no dynamic library available (or you're on an architecture that
    doesn't support dynamic libraries at all).
  libfoo_p.a
    Static library for profiling build (used when you link a program
    with -p or -pg).
  libfoo_pic.a
    Static library, but build from the object files that are compiled
    with -fpic or -fPIC (i.e. the object files that are used to build
    the dynamic library). I don't know whether that's used for linking
    with -lfoo at all (or only if you specify its full pathname).
  libfoo.so.x.y
    Dynamic library. Used for linking with -lfoo unless one of the
    others is used as described above.
    *Also needed at runtime* if a program is linked against it.
    If a program is linked against libfoo.so.x.y, you need
    version x.z with the same x and z >= y.

So bottom line, if you don't intend to compile or (re-)link anything
on your target system, IMO you should be safe to remove the lib*.a
files. You *should* keep the lib*.so.* unless you can be sure that
you don't need any binary that is linked against that library (check
with ldd).

You can of course do test installations e.g. in a chroot environment or
in a virtual machine (e.g. qemu) or on a spare machine where it doesn't
hurt if you break things by removing too much.

Kind regards,

Hannah.

Reply via email to