(libtool.info)Top
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.4.6.
Note: Reporting bugs, for information on how to report problems
with GNU Libtool.
- 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
- 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.
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