1 1 Shared library support for GNU 1 ****************************** 1 1 This file documents GNU Libtool, a script that allows package developers 1 to provide generic shared library support. This edition documents 1 version 2.4.6. 1 1 ⇒Reporting bugs, for information on how to report problems 1 with GNU Libtool. 1
1 · 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. 1 1 -- The Detailed Node Listing -- 1 1 Introduction 1 · 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. 1 1 Using libtool 1 · 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. 1 1 Linking executables 1 · Wrapper executables Wrapper executables for some platforms. 1 1 Invoking 'libtool' 1 · 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. 1 1 Integrating libtool with your package 1 · 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. 1 1 Configuring libtool 1 · LT_INIT Configuring 'libtool' in 'configure.ac'. · Configure notes Platform-specific notes for configuration. 1 1 Including libtool in your package 1 · Invoking libtoolize 'libtoolize' command line options. · Autoconf and LTLIBOBJS Autoconf automates LTLIBOBJS generation. 1 1 Using libtool with other languages 1 · C++ libraries Writing libraries for C++ · Tags Tags 1 1 Library interface versions 1 · 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. 1 1 Tips for interface design 1 · C header files How to write portable include files. 1 1 Dlopened modules 1 · 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. 1 1 Using libltdl 1 · 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. 1 1 Frequently Asked Questions about libtool 1 · Stripped link flags Dropped flags when creating a library 1 1 Troubleshooting 1 · Libtool test suite Libtool's self-tests. · Reporting bugs How to report problems with libtool. 1 1 The libtool test suite 1 · Test descriptions The contents of the old test suite. · When tests fail What to do when a test fails. 1 1 Maintenance notes for libtool 1 · 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. 1 1 Porting libtool to new systems 1 · Information sources Where to find relevant documentation · Porting inter-library dependencies Implementation details explained 1 1 Platform quirks 1 · References Finding more information. · 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. 1 1 File name conversion 1 · 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 1 1