3.4 Configuration Names
The GNU Autotools name all types of computer systems using a
configuration name. This is a name for the system in a
Some example configuration names are `sparc-sun-solaris2.7',
`i586-pc-linux-gnu', or `i386-pc-cygwin'.
All configuration names used to have three parts, and in some
documentation they are still called configuration triplets. A
three part configuration name is
configuration names are permitted to have four parts on systems which
distinguish the kernel and the operating system, such as GNU/Linux. In
these cases, the configuration name is
When using a configuration name in an option to a tool such as
configure, it is normally not necessary to specify an entire
name. In particular, the middle field (manufacturer, described
below) is often omitted, leading to strings such as `i386-linux' or
`sparc-sunos'. The shell script `config.sub' is used to
translate these shortened strings into the canonical form.
On most Unix variants, the shell script `config.guess' will print
the correct configuration name for the system it is run on. It does
this by running the standard `uname' program, and by examining
other characteristics of the system. On some systems,
`config.guess' requires a working C compiler or an assembler.
Because `config.guess' can normally determine the configuration
name for a machine, it is only necessary for a user or developer to
specify a configuration name in unusual cases, such as when building a
Here is a description of each field in a configuration name:
- The type of processor used on the system. This is typically something
like `i386' or `sparc'. More specific variants are used as
well, such as `mipsel' to indicate a little endian MIPS processor.
- A somewhat freeform field which indicates the manufacturer of the
system. This is often simply `unknown'. Other common strings are
`pc' for an IBM PC compatible system, or the name of a workstation
vendor, such as `sun'.
- The name of the operating system which is run on the system. This will
be something like `solaris2.5' or `winnt4.0'. There is no
particular restriction on the version number, and strings like
`aix220.127.116.11' are seen.
Configuration names may be used to describe all sorts of systems,
including embedded systems which do not run any operating system. In
this case, the field is normally used to indicate the object file
format, such as `elf' or `coff'.
- This is used mainly for GNU/Linux systems. A typical GNU/Linux
configuration name is `i586-pc-linux-gnulibc1'. In this case the
kernel, `linux', is separated from the operating system,
`configure' allows fine control over the format of binary files. It
is not necessary to build a package for a given kind of machine on that
machine natively--instead, a cross-compiler can be used. Moreover, if
the package you are trying to build is itself capable of operating in a
cross configuration, then the build system need not be the same kind of
machine used to host the cross-configured package once the package is
built! Consider some examples:
- Compiling a simple package for a GNU/Linux system.
- host = build = target = `i586-pc-linux-gnu'
- Cross-compiling a package on a GNU/Linux system that is intended to
- run on an IBM AIX machine:
build = `i586-pc-linux-gnu', host = target =
- Building a Solaris-hosted MIPS-ECOFF cross-compiler on a GNU/Linux
build = `i586-pc-linux-gnu', host =
`sparc-sun-solaris2.4', target = `mips-idt-ecoff'