File: libtool.info, Node: Top, Next: Introduction, Prev: ((dir)), Up: ((dir)) Shared library support for GNU ****************************** This file documents GNU Libtool, a script that allows package developers to provide generic shared library support. This edition documents version 2.5.4. *Note Reporting bugs::, for information on how to report problems with GNU Libtool. * Menu: * Introduction:: What the heck is libtool? * Libtool paradigm:: How libtool's view of libraries is different. * Using libtool:: Example of using libtool to build libraries. * Invoking libtool:: Running the ‘libtool’ script. * Integrating libtool:: Using libtool in your own packages. * Other languages:: Using libtool without a C compiler. * Versioning:: Using library interface versions. * Library tips:: Tips for library interface design. * Inter-library dependencies:: Libraries that depend on other libraries. * Dlopened modules:: ‘dlopen’ing libtool-created libraries. * Using libltdl:: Libtool's portable ‘dlopen’ wrapper library. * Trace interface:: Libtool's trace interface. * FAQ:: Frequently Asked Questions * Troubleshooting:: When libtool doesn't work as advertised. * Maintaining:: Information used by the libtool maintainer. * GNU Free Documentation License:: License for this manual. * Combined Index:: Full index. -- The Detailed Node Listing -- Introduction * Motivation:: Why does GNU need a libtool? * Issues:: The problems that need to be addressed. * Other implementations:: How other people have solved these issues. * Postmortem:: Learning from past difficulties. Using libtool * Creating object files:: Compiling object files for libraries. * Linking libraries:: Creating libraries from object files. * Linking executables:: Linking object files against libtool libraries. * Debugging executables:: Running GDB on libtool-generated programs. * Installing libraries:: Making libraries available to users. * Installing executables:: Making programs available to users. * Static libraries:: When shared libraries are not wanted. Linking executables * Wrapper executables:: Wrapper executables for some platforms. Invoking ‘libtool’ * Compile mode:: Creating library object files. * Link mode:: Generating executables and libraries. * Execute mode:: Debugging libtool-generated programs. * Install mode:: Making libraries and executables public. * Finish mode:: Completing a library installation. * Uninstall mode:: Removing installed executables and libraries. * Clean mode:: Removing uninstalled executables and libraries. Integrating libtool with your package * Autoconf macros:: Autoconf macros exported by libtool. * Makefile rules:: Writing ‘Makefile’ rules for libtool. * Using Automake:: Automatically supporting libtool. * Configuring:: Configuring libtool for a host system. * Distributing:: What files to distribute with your package. * Static-only libraries:: Sometimes shared libraries are just a pain. Configuring libtool * LT_INIT:: Configuring ‘libtool’ in ‘configure.ac’. * Configure notes:: Platform-specific notes for configuration. Including libtool in your package * Invoking libtoolize:: ‘libtoolize’ command line options. * Autoconf and LTLIBOBJS:: Autoconf automates LTLIBOBJS generation. Using libtool with other languages * C++ libraries:: Writing libraries for C++ * Tags:: Tags Library interface versions * Interfaces:: What are library interfaces? * Libtool versioning:: Libtool's versioning system. * Updating version info:: Changing version information before releases. * Release numbers:: Breaking binary compatibility for aesthetics. Tips for interface design * C header files:: How to write portable include files. Dlopened modules * Building modules:: Creating dlopenable objects and libraries. * Dlpreopening:: Dlopening that works on static platforms. * Linking with dlopened modules:: Using dlopenable modules in libraries. * Finding the dlname:: Choosing the right file to ‘dlopen’. * Dlopen issues:: Unresolved problems that need your attention. Using libltdl * Libltdl interface:: How to use libltdl in your programs. * Modules for libltdl:: Creating modules that can be ‘dlopen’ed. * Thread Safety in libltdl:: Registering callbacks for multi-thread safety. * User defined module data:: Associating data with loaded modules. * Module loaders for libltdl:: Creating user defined module loaders. * Distributing libltdl:: How to distribute libltdl with your package. Frequently Asked Questions about libtool * Stripped link flags:: Dropped flags when creating a library Troubleshooting * Libtool test suite:: Libtool's self-tests. * Reporting bugs:: How to report problems with libtool. The libtool test suite * Test descriptions:: The contents of the old test suite. * When tests fail:: What to do when a test fails. Maintenance notes for libtool * New ports:: How to port libtool to new systems. * Tested platforms:: When libtool was last tested. * Platform quirks:: Information about different library systems. * libtool script contents:: Configuration information that libtool uses. * Cheap tricks:: Making libtool maintainership easier. Porting libtool to new systems * Information sources:: Where to find relevant documentation * Porting inter-library dependencies:: Implementation details explained Platform quirks * Compilers:: Creating object files from source files. * Reloadable objects:: Binding object files together. * Multiple dependencies:: Removing duplicate dependent libraries. * Archivers:: Programs that create static archives. * Cross compiling:: Issues that arise when cross compiling. * File name conversion:: Converting file names between platforms. * Windows DLLs:: Windows header defines. File name conversion * File Name Conversion Failure:: What happens when file name conversion fails * Native MinGW File Name Conversion:: MSYS file name conversion idiosyncrasies * Cygwin/Windows File Name Conversion:: Using ‘cygpath’ to convert Cygwin file names * Unix/Windows File Name Conversion:: Using Wine to convert Unix paths * LT_CYGPATH:: Invoking ‘cygpath’ from other environments * Cygwin to MinGW Cross:: Other notes concerning MinGW cross