Top: Autoconf, Automake, and Libtool
Contents: Table of Contents
Index: Index
About: About this document



See section 13. Rolling Distribution Tarballs


A number chosen arbitrarily by the Automake developers.


This book is built using automake and autoconf. We couldn't find a use for libtool.


Shock, horror



An #include cycle is the situation where file `a.h' #includes file `b.h', and `b.h' #includes file `a.h' -- either directly or through some longer chain of #includes.


For an explanation of name mangling See section Writing Portable C++ with GNU Autotools.



Available at


Distributed from


GCC must be compilable by K&R compilers so that it can be built and installed in an ANSI compiler free environment.


AIX and Windows being the main culprits.


Read Eval Print Loop.


Generally this involves indexing the symbols exported from the archive for faster linking, and to allow the archived objects to reference symbols from other objects earlier in the same archive.


Application Binary Interface: the layout of the bytes that comprise binary objects and executables: 32 or 64 bit words; procedure calling conventions; memory alignment rules; system call interface; order and type of the binary sections (data, code etc) and so on.


As is often the case, AIX is peculiar in this respect -- ranlib adds path information to a static archive, and must be run again after the archive is installed. libtool knows about this, and will automatically bless the installed library again on AIX.


When making a binary package from a virtual root directory for example.


`AM_PROG_LIBTOOL' if you have an older automake or libtool installation.


Position Independent Code -- suitable for shared libraries which might be loaded to different addresses when linked by the runtime loader.


The functionality of `ltconfig' is slated for migration into `libtool.m4' for a future release of libtool, whereupon this file will no longer be necessary.



Actually the suffix will be whatever is appropriate for the target host: such as `.obj' on Windows for example.


For example, when I come to using the `make dist' rule.


The GNU standard is distributed from


This is for Autoconf version 2.13. Autoconf version 2.50 recommends AC_CONFIG_COMMANDS.


This is a sort of callback function which will be called by the make rules generated by Automake.


By default, GNU tar can create non-portable archives in certain (rare) situations. To be safe, Automake arranges to use the `-o' compatibility flag when GNU tar is used.


Probably numbered 1.5.


There has been some debate in the Autoconf community about extending Autoconf to allow new directories to be set on the configure command line. Currently the consensus seems to be that there are too many arguments to configure already.


The most common way being to simply set prefix.


This example assumes the use of GNU tar when extracting; this is standard on Linux but does not come with Solaris.


These names come from Gulliver's Travels.




Windows does permit a program to use a forward slash to separate directories when calling routines such as `fopen'. However, Windows users do not expect to type forward slashes when they enter file names, and they do not expect to see forward slashes when a file name is printed.


Visit the Libtool home page at for breaking news.



Not essential but will be slower without this option, see 10.2.1 Position Independent Code.


HP-UX being the most notable exception.


As I always like to say, `from BeOS to Windows!'. And yes, I do think that it is a better catchphrase than `from AIX to Xenix'!


Use `AM_PROG_LIBTOOL' if you have automake version 1.4 or older or a version of libtool earlier than 1.4.


Architectures which use ELF and ECOFF binary format for example.


Those which use a.out binary format, for example.



If you have an early 1.3c snapshot of Libtool, you will also need to copy the `ltdl.m4' file into your distribution.


This is very different to the way errors are managed when writing a custom loader for libltdl. Compare this section with Loader Errors.


See section 18.1 Introducing libltdl


Dmalloc is distributed from


GNU M4 permits an unlimited number of arguments, whereas other versions of M4 limit the number of addressable arguments to nine.


Which is precisely what the ``' and `'' characters in all of the examples in this section are.


The ``' is used in grave redirection and `'' for the shell's own quote character!


Notable exceptions are GNU Bash, and both Ksh and the Bourne shell on Solaris.


This is a literal newline.


A term coined by Noah Friedman in the early days of Autoconf to denote the process of converting a package that configures itself without Autoconf to one which does.




Mingw32 home page,; and DJGPP home page,


since Cygwin-b20.1, I believe.


1.1.1 at the time of writing.



You can get a precompiled package from, also an excellent resource for other packages ported to Cygwin.



The CygUtils website is


Typically you would also have a floppy drive named `A:', and a CD-ROM named `D:'.


See section 10.5 Executing Uninstalled Binaries.


In general, a stub function will satisfy the linker's requirements to resolve an undefined symbol at link time, but has no functionality of its own. In this context, the stubs do have some boilerplate code to pass execution flow into the correct full function in the DLL.


Some people prefer to use the term autoconfuse -- if you should meet any, be sure to tell them about this book


Part of the Binutils port to Windows, and necessary to massage compiler objects into a working DLL.


This is a shell script for Cygwin which emulates the behaviour of ldd on GNU/Linux, available online from


The name Canadian Cross comes from the most complex case, in which three different types of systems are used. At the time that these issues were being hashed out, Canada had three national political parties.

This document was generated by Gary V. Vaughan on February, 8 2006 using texi2html