Just trying to get terminology to the point, note that developers from other platforms will most probably have known the term "linker script", so let's expand on that knowledge without driving away newbies.
Alexandre Duret-Lutz wrote:
All these examples ought be backed up with test cases, but I haven't yet got around to do it. By the meantime, comments and corrections (related to English or to Automake...) are greatly welcome.
------------------------------
Building a Shared Library =========================
Building shared libraries is a relatively complex matter. For this reason, GNU Libtool (*note Introduction: (libtool)Top.) was created to help build shared libraries in a platform-independent way.
Presentation of Libtool -----------------------
Actually, Libtool abstracts shared and static libraries into an unified concept henceforth called "Libtool libraries". Libtool libraries are files using the `.la' suffix, and can designate a static library, a shared library, or maybe both. What exactly it is, you cannot know before `./configure'-time: not all platforms support all kinds of libraries, and users can explicitly select which libraries should be built. (However the package's maintainers can tune the default, *Note The `AC_PROG_LIBTOOL' macro: (Libtool)AC_PROG_LIBTOOL.)
The libtool infrastructure abstracts the creation and usage of shared and static libraries into a general concept of "libtool libraries". The libtool library file uses the ".la" suffix being a linker script with some platform dependent parts present in the ".libs" subdirectory. The linker script can designate a static library, a shared library, or maybe both.
The actual type of the libtool library is determined at './configure'-time, as not all platforms support all kinds of libraries, and users may explicitly select which library types should be built. However the package's maintainers can tune the default, (*Note The `AC_PROG_LIBTOOL' macro: (Libtool)AC_PROG_LIBTOOL and (Libtool)AC_DISABLE_SHARED).
Because object files for shared and static libraries must be compiled differently, Libtool also uses its own abstraction: "Libtool objects". These are files ending with the `.lo' suffix. Libtool libraries are built with Libtool objects.
Because object files for shared and static libraries must be compiled differently, Libtool is also used during compilation. The intermediate "Libtool object" files are created with the `.lo' suffix. Libtool shared libraries are built from these Libtool objects.