• GNU gcc compiler 
  • GNU make
  • GNU m4 macro processor version 1.4.5 or later
  • GNU tar programs
  • Also, you need to ensure that autoconf, automake, and libtool programs are available on your system.



GNU Build system components

  • AutoScan – Search the source files for common portability  problems,  check for incompleteness of `configure.ac', and create a file `configure.scan' which is  a  preliminary  `configure.ac'  for that package.
  • configure.ac –  configure.ac (sometimes also named: configure.in) is an input file for autoconf. It contains tests that check for conditions that are likely to differ on different platforms.
  • makefile.am –  Makefile.am — a user input file to automake
  • aclocal – It contains diagrams explaining how the different files of an autotools project interact with each other and by which tool they are used: configure, config.h, config.status, aclocal.m4 etc
  • autoheader – Using autoheader to Create config.h.in
  • automake –  Automake is a tool for automatically generating `Makefile.in' files compliant with the GNU Coding Standards. Automake requires the use of Autoconf  – automake manual
  • aclocal.m4 – Automake includes a number of Autoconf macros that can be used in your package (see Macros); some of them are actually required by Automake in certain situations. These macros must be defined in your aclocal.m4; otherwise they will not be seen by autoconf.
  • config.h.in –  The include file template that holds the C macros to be defined by configure is usually called config.h.in and may be maintained either manually or automatically.
  • makefile.in – 
  • autoconf – autoconf is part of the autoconf package.  autoconf determines what the system is capable of. That is, which function exist and the like. Additionally, it finds the location of programms needed to build a program. It is part of autotools. autoconf produces the configure script.  GNU autoconf manual
  • configure 
  • configure.in –  a user input file to autoconf
  • config.status –  The first step in building a package is to run the `configure' script. The `configure' script will create the file `config.status', which is itself a shell script. When you first run `configure', it will automatically run `config.status'. An `Makefile' derived from an automake generated `Makefile.in' will contain rules to automatically run `config.status' again when necessary to recreate certain files if their inputs change.
  • config.h – This file defines C preprocessor macros which C code can use to adjust its behaviour on different systems. The `config.status' script will transform `config.in' into `config.h'This file defines C preprocessor macros which C code can use to adjust its behaviour on different systems. The `config.status' script will transform `config.in' into `config.h'
  • makefile
  • make –    – make manual


Build Examples

  1. Gary V. Vaughan, Ben Elliston, Tom Tromey and Ian Lance Taylor. GNU Automake, Autoconf, and Libtool. http://sources.redhat.com/autobook/.
  2. Autoconf Manual. http://www.gnu.org/software/autoconf/manual/index.html.
  3. The GNU Autoconf Macro Archive. http://www.gnu.org/software/ac-archive/.
  4. John Calcote. Autotools: a practitioner’s guide to Autoconf, Automake and Libtool. http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool.

Wikipedia Entry External Links



your source files --> [autoscan*] --> [configure.scan] --> configure.in

configure.in --.   .------> autoconf* -----> configure
[aclocal.m4] --+   `---.
[acsite.m4] ---'       |
                       +--> [autoheader*] -> [config.h.in]
[acconfig.h] ----.     |
[config.h.top] --+
[config.h.bot] --'

Makefile.in -------------------------------> Makefile.in

Files used in configuring a software package:

                       .-------------> config.cache
configure* ------------+-------------> config.log
[config.h.in] -.       v            .-> [config.h] -.
               +--> config.status* -+               +--> make*
Makefile.in ---'                    `-> Makefile ---'




Leave a Reply

Your email address will not be published. Required fields are marked *