\chapentry{Introduction}{1}{1} \secentry{Motivation for writing libtool}{1}{1}{1} \secentry{Implementation issues}{1}{2}{2} \secentry{Other implementations}{1}{3}{2} \secentry{A postmortem analysis of other implementations}{1}{4}{2} \chapentry{The libtool paradigm}{2}{4} \chapentry{Using libtool}{3}{5} \secentry{Creating object files}{3}{1}{5} \secentry{Linking libraries}{3}{2}{6} \secentry{Linking executables}{3}{3}{7} \secentry{Debugging executables}{3}{4}{9} \secentry{Installing libraries}{3}{5}{10} \secentry{Installing executables}{3}{6}{12} \secentry{Linking static libraries}{3}{7}{12} \chapentry{Invoking \code {libtool}}{4}{14} \secentry{Compile mode}{4}{1}{15} \secentry{Link mode}{4}{2}{15} \secentry{Execute mode}{4}{3}{17} \secentry{Install mode}{4}{4}{18} \secentry{Finish mode}{4}{5}{18} \secentry{Uninstall mode}{4}{6}{18} \secentry{Clean mode}{4}{7}{18} \chapentry{Integrating libtool with your package}{5}{19} \secentry{Writing \file {Makefile} rules for libtool}{5}{1}{19} \secentry{Using Automake with libtool}{5}{2}{19} \secentry{Configuring libtool}{5}{3}{20} \subsecentry{The \code {AC_PROG_LIBTOOL} macro}{5}{3}{1}{20} \secentry{Including libtool in your package}{5}{4}{24} \subsecentry{Invoking \code {libtoolize}}{5}{4}{1}{24} \subsecentry{Autoconf \samp {.o} macros}{5}{4}{2}{25} \secentry{Static-only libraries}{5}{5}{25} \chapentry{Library interface versions}{6}{27} \secentry{What are library interfaces?}{6}{1}{27} \secentry{Libtool's versioning system}{6}{2}{27} \secentry{Updating library version information}{6}{3}{28} \secentry{Managing release information}{6}{4}{29} \chapentry{Tips for interface design}{7}{30} \secentry{Writing C header files}{7}{1}{30} \chapentry{Inter-library dependencies}{8}{33} \chapentry{Dlopened modules}{9}{34} \secentry{Building modules to dlopen}{9}{1}{34} \secentry{Dlpreopening}{9}{2}{35} \secentry{Finding the correct name to dlopen}{9}{3}{36} \secentry{Unresolved dlopen issues}{9}{4}{36} \chapentry{Using libltdl}{10}{37} \secentry{How to use libltdl in your programs}{10}{1}{37} \secentry{Creating modules that can be \code {dlopen}ed}{10}{2}{41} \secentry{Using libtldl in a multi threaded environment}{10}{3}{42} \secentry{Data associated with loaded modules}{10}{4}{43} \secentry{How to create and register new module loaders}{10}{5}{45} \subsecentry{Error handling within user module loaders}{10}{5}{1}{49} \secentry{How to distribute libltdl with your package}{10}{6}{49} \chapentry{Using libtool with other languages}{11}{52} \secentry{Writing libraries for C++}{11}{1}{52} \chapentry{Troubleshooting}{12}{53} \secentry{The libtool test suite}{12}{1}{53} \subsecentry{Description of test suite}{12}{1}{1}{53} \subsecentry{When tests fail}{12}{1}{2}{56} \secentry{Reporting bugs}{12}{2}{56} \chapentry{Maintenance notes for libtool}{13}{58} \secentry{Porting libtool to new systems}{13}{1}{58} \subsecentry{Information sources}{13}{1}{1}{58} \subsecentry{Porting inter-library dependencies support}{13}{1}{2}{59} \secentry{Tested platforms}{13}{2}{60} \secentry{Platform quirks}{13}{3}{60} \subsecentry{References}{13}{3}{1}{61} \subsecentry{Compilers}{13}{3}{2}{61} \subsecentry{Reloadable objects}{13}{3}{3}{62} \subsecentry{Multiple dependencies}{13}{3}{4}{62} \subsecentry{Archivers}{13}{3}{5}{62} \secentry{\code {libtool} script contents}{13}{4}{62} \secentry{Cheap tricks}{13}{5}{69} \unnumbchapentry{GNU Free Documentation License}{71} \unnumbsecentry{Preamble}{71} \unnumbsecentry{APPLICABILITY AND DEFINITIONS}{71} \unnumbsecentry{VERBATIM COPYING}{72} \unnumbsecentry{COPYING IN QUANTITY}{72} \unnumbsecentry{MODIFICATIONS}{73} \unnumbsecentry{COMBINING DOCUMENTS}{74} \unnumbsecentry{COLLECTIONS OF DOCUMENTS}{75} \unnumbsecentry{AGGREGATION WITH INDEPENDENT WORKS}{75} \unnumbsecentry{TRANSLATION}{75} \unnumbsecentry{TERMINATION}{76} \unnumbsecentry{FUTURE REVISIONS OF THIS LICENSE}{76} \unnumbsecentry{ADDENDUM: How to use this License for your documents}{76} \unnumbchapentry{Index}{77} .