manpagez: man pages & more
info libtool
Home | html | info | man
[Top] [Contents] [Index] [ ? ]



If you don’t specify an rpath, then libtool builds a libtool convenience archive, not a shared library (see section Linking static libraries).


However, you should avoid using ‘-L’ or ‘-l’ flags to link against an uninstalled libtool library. Just specify the relative path to the ‘.la’ file, such as ‘../intl/’. This is a design decision to eliminate any ambiguity when linking against uninstalled shared libraries.


And why should we? ‘main.o’ doesn’t directly depend on ‘-lm’ after all.


Don’t strip static libraries though, or they will be unusable.


Since GNU Automake 1.5, the flags ‘-dlopen’ or ‘-dlpreopen’ (see section Link mode) can be employed with the ‘program_LDADD’ variable. Unfortunately, older releases didn’t accept these flags, so if you are stuck with an ancient Automake, we recommend quoting the flag itself, and setting ‘program_DEPENDENCIES’ too:

program_LDADD = "-dlopen"


LT_INIT requires that you define the ‘Makefile’ variable top_builddir in your ‘’. Automake does this automatically, but Autoconf users should set it to the relative path to the top of your build directory (‘../..’, for example).


GNU Image Manipulation Program, for those who haven’t taken the plunge. See


We used to recommend __P, __BEGIN_DECLS and __END_DECLS. This was bad advice since symbols (even preprocessor macro names) that begin with an underscore are reserved for the use of the compiler.




Some platforms, notably Mac OS X, differentiate between a runtime library that cannot be opened by lt_dlopen and a dynamic module that can. For maximum portability you should try to ensure that you only pass lt_dlopen objects that have been compiled with libtool’s ‘-module’ flag.


This is used for the host dependent module loading API – shl_load and LoadLibrary for example


We used to recommend adding the contents of ‘ltdl.m4’ to ‘acinclude.m4’, but with aclocal from a modern Automake (1.8 or newer) and this release of libltdl that is not only unnecessary but makes it easy to forget to upgrade ‘acinclude.m4’ if you move to a different release of libltdl.


Even if libltdl is installed, ‘LTDL_INIT’ may fail to detect it if libltdl depends on symbols provided by libraries other than the C library.


All code compiled for the PowerPC and RS/6000 chips (powerpc-*-*, powerpcle-*-*, and rs6000-*-*) is position-independent, regardless of the operating system or compiler suite. So, “regular objects” can be used to build shared libraries on these systems and no special PIC compiler flags are required.

[Top] [Contents] [Index] [ ? ]

This document was generated on December 1, 2011 using texi2html 5.0.

© 2000-2018
Individual documents may contain additional copyright information.