Search code examples
linuxlibrarieslibtool

What are libtool's .la file for?


What are libtool's .la files for? How are they used with a shared object?


Solution

  • It is a textual file that includes a description of the library.

    It allows libtool to create platform-independent names.

    For example, libfoo goes to:

    Under Linux:

    /lib/libfoo.so       # Symlink to shared object
    /lib/libfoo.so.1     # Symlink to shared object
    /lib/libfoo.so.1.0.1 # Shared object
    /lib/libfoo.a        # Static library
    /lib/libfoo.la       # 'libtool' library
    

    Under Cygwin:

    /lib/libfoo.dll.a    # Import library
    /lib/libfoo.a        # Static library
    /lib/libfoo.la       # libtool library
    /bin/cygfoo_1.dll    # DLL
    

    Under Windows MinGW:

    /lib/libfoo.dll.a    # Import library
    /lib/libfoo.a        # Static library
    /lib/libfoo.la       # 'libtool' library
    /bin/foo_1.dll       # DLL
    

    So libfoo.la is the only file that is preserved between platforms by libtool allowing to understand what happens with:

    • Library dependencies
    • Actual file names
    • Library version and revision

    Without depending on a specific platform implementation of libraries.