(libtool.info)Top


Next: Introduction Prev: (dir) Up: (dir)
Enter node , (file) or (file)node

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.7.

   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

automatically generated by info2www version 1.2.2.9