| Autoconf, Automake, and Libtool | ||
|---|---|---|
| <<< Previous | How to run configure and make | Next >>> |
The GNU Autotools name all types of computer systems using a configuration name. This is a name for the system in a standardized format.
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 cpu-manufacturer-operating_system. Currently 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 cpu-manufacturer-kernel-operating_system.
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 cross-compiler.
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 aix4.1.4.0 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, gnulibc1.
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:
host = build = target = i586-pc-linux-gnu
run on an IBM AIX machine: build = i586-pc-linux-gnu, host = target = rs6000-ibm-aix3.2
system. build = i586-pc-linux-gnu, host = sparc-sun-solaris2.4, target = mips-idt-ecoff
| <<< Previous | Home | Next >>> |
| The most useful Makefile targets | Up | Introducing Makefiles |