| || |
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 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 `aix22.214.171.124' 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:
- 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 = `rs6000-ibm-aix3.2'
- Building a Solaris-hosted MIPS-ECOFF cross-compiler on a GNU/Linux
- system. build = `i586-pc-linux-gnu' , host = `sparc-sun-solaris2.4' , target = `mips-idt-ecoff'