GNU build system

From Wikipedia, the free encyclopedia

(Redirected from GNU Build Tools)
Jump to: navigation, search
Flow diagram of autoconf and automake, two tools in the GNU build system
Flow diagram of autoconf and automake, two tools in the GNU build system

The GNU build system, also known as the Autotools, is a suite of programming tools produced by the GNU project. These tools are designed to assist in making various source code packages portable to many Unix-like systems. The GNU build system is part of the GNU toolchain and is widely used in many free software and open source packages. While the tools comprising the GNU build system themselves are GPL-ed free software, there are no restrictions in using them in making non-free software portable.

Contents

The GNU build system comprises the GNU utility programs Autoconf, Automake, and Libtool. Other related tools frequently used with the GNU build system are GNU’s make program, GNU gettext, pkg-config, and the GNU Compiler Collection, also called GCC.

Autoconf processes files (configure.in or configure.ac, though configure.ac is generally preferred[1]) to generate a configure script.

When running the generated configure script, other template files, customarily ending in ".in", such as Makefile.in, are processed to create their final output, in this case a Makefile.

Autoconf is used to attempt to work around the quirks found in various Unix-like operating systems. For example, some Unix-like systems may have certain facilities that are known to be broken or missing entirely. Autoconf creates a shell script which can detect these, and the program can work around them. The final output of the Autoconf utility is the configure script.

Autoconf comes with several auxiliary programs designed to ease the creation of configure.ac, such as the Autoheader tool, which is used to help manage C header files, autoscan, which can create an initial input file for Autoconf and ifnames, which can list C pre-processor identifiers used in the program.

Automake helps to create portable Makefiles, which are in turn processed with the make utility. It takes its input as Makefile.am, and turns it into Makefile.in, which is used by Autoconf to generate the file Makefile output.

Libtool helps manage the creation of static and dynamic libraries on various Unix-like operating systems. Libtool accomplishes this by abstracting the library creation process, hiding differences between various systems (e.g., GNU/Linux systems vs. Solaris).

Gnulib simplifies the process of making software that uses Autoconf and Automake portable to a wide range of systems.

The GNU build system provides an environment to a computer programmer which allows them to write cross-platform software (at least running on multiple Unix-like operating systems, see vendor lock-in). It also makes the build process easier on the user, allowing the user to usually just run a small set of commands to build the program from its source code and install it.

The utilities used by the GNU build system are only required to be on the developer’s workstation, as well. Users do not need to have Autoconf, Automake, or Libtool in order to build or install software which was developed using them. This makes the GNU build system self-contained, requiring only standard Unix-like tools to build. This is accomplished by using shell scripts which help to configure the software for a given person’s operating system.

The utilities used in the GNU build system can also be used alone or together—a software project can use Autoconf, for example, without using Automake as well. However, the GNU build system’s components can interact with each other.

The GNU build system uses Bourne-compatible shell scripts to assist the user in the configuration and build process. However, some operating systems (such as the Microsoft Windows family of systems) cannot run Bourne shell scripts on their own. This makes building such software on the Windows operating system a bit harder than on a Unix-like system which provides the Bourne shell as a standard component. One can install the Cygwin or MSYS system on top of Windows to provide a Unix-like compatibility layer, though, allowing configure scripts to run. Cygwin also provides the GNU Compiler Collection, GNU make, and other software that provides a nearly complete Unix-like system within Windows; MSYS also provides GNU make and other tools designed to work with the MinGW version of GCC. Increasingly, cross-compiling software to run on a Windows host from a GNU/Linux or other Unix-like build system is also possible, using MinGW.

Projects which use the GNU build system may or may not provide a configure script within their Software Configuration Management systems (such as CVS or Subversion). If a project that uses the GNU build system does not have a generated ./configure file available for the user, the user must generate it. One possible way this can be done is to execute a series of commands at a shell prompt:

$ aclocal
$ autoconf
$ autoheader
$ automake

Not all of the commands may be necessary depending on how a given project uses the GNU build system, or more commands may be necessary. Another common convention is to provide a script, often named autogen.sh, that runs all the needed pre-build tools. In some cases, one can also use:

$ autoreconf

which automatically invokes the above commands as needed.

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.