Subject: Re: PIC libraries?
To: None <>
From: Mike Long <>
List: current-users
Date: 03/31/1994 13:55:08
>From: "Eduardo E. Horvath" <>
>Date: Thu, 31 Mar 1994 09:26:25 -0800 (PST)

>I have noticed that in most cases when creating a set of libraries, a
>lib*.a, lib*_pic.a, and lib*_so.a* are created.  I know that the _pic
>library is created in order to build the shared library.  Why is the
>non-PIC library created?  Can't the PIC library be used for static
>linking?  Is there a size or performance penalty?

Both, since the compiler's choice of machine instructions to use is
restricted, and it may have to use multiple instructions when a single
one would do (in non-PIC code).  The magnitude of the hit is very

I have a different, but related, question:  Once the shared libraries
(lib*.so.*) are created, what are the lib*_pic.a versions needed for?
Does ld need the lib*_pic.a version to find entry points in the
lib*.so.* version?  How do lib*.sa.* (-Bsilly) libraries fit into all
of this?  Is the shared library architecture documented anywhere?
Mike Long                               
VLSI Design Engineer                              voice: (617)461-4030
Analog Devices, SPD Div.                            FAX: (617)461-3010
Norwood, MA 02062                            *this = !opinion(Analog);