### C.2 Invoking the gdb `configure` Script

gdb comes with a `configure` script that automates the process of preparing gdb for installation; you can then use `make` to build the `gdb` program.

The gdb distribution includes all the source code you need for gdb in a single directory, whose name is usually composed by appending the version number to ‘`gdb`’.

For example, the gdb version 7.6.1-2013.10 distribution is in the `gdb-linaro-7.6.1-2013.10` directory. That directory contains:

`gdb-linaro-7.6.1-2013.10/configure` (and supporting files)
  script for configuring gdb and all its supporting libraries
`gdb-linaro-7.6.1-2013.10/gdb`
  the source specific to gdb itself
`gdb-linaro-7.6.1-2013.10/bfd`
  source for the Binary File Descriptor library
`gdb-linaro-7.6.1-2013.10/include`
  gnu include files
`gdb-linaro-7.6.1-2013.10/libiberty`
  source for the ‘`-liberty`’ free software library
`gdb-linaro-7.6.1-2013.10/opcodes`
  source for the library of opcode tables and disassemblers
`gdb-linaro-7.6.1-2013.10/readline`
  source for the gnu command-line interface
`gdb-linaro-7.6.1-2013.10/glob`
  source for the gnu filename pattern-matching subroutine
`gdb-linaro-7.6.1-2013.10/mmalloc`
  source for the gnu memory-mapped malloc package

The simplest way to configure and build gdb is to run `configure` from the `gdb-version-number` source directory, which in this example is the `gdb-linaro-7.6.1-2013.10` directory.

First switch to the `gdb-version-number` source directory if you are not already in it; then run `configure`. Pass the identifier for the platform on which gdb will run as an argument.

For example:

         cd gdb-linaro-7.6.1-2013.10
         ./configure host
         make

where host is an identifier such as ‘`sun4`’ or ‘`decstation`’, that identifies the platform where gdb will run. (You can often leave off host; `configure` tries to guess the correct value by examining your system.)

Running ‘`configure host`’ and then running `make` builds the `bfd`, `readline`, `mmalloc`, and `libiberty` libraries, then `gdb` itself. The configured source files, and the binaries, are left in the corresponding source directories.

`configure` is a Bourne-shell (`/bin/sh`) script; if your system does not recognize this automatically when you run a different shell, you may need to run `sh` on it explicitly:

         sh configure host

If you run `configure` from a directory that contains source directories for multiple libraries or programs, such as the `gdb-linaro-7.6.1-2013.10` source directory for version 7.6.1-2013.10, `configure` creates configuration files for every directory level underneath (unless you tell it not to, with the ‘`--norecursion`’ option).

You should run the `configure` script from the top directory in the source tree, the `gdb-version-number` directory. If you run `configure` from one of the subdirectories, you will configure only that subdirectory. That is usually not what you want. In particular, if you run the first `configure` from the `gdb` subdirectory of the `gdb-version-number` directory, you will omit the configuration of `bfd`, `readline`, and other sibling directories of the `gdb` subdirectory. This leads to build errors about missing include files such as `bfd/bfd.h`.

You can install `gdb` anywhere; it has no hardwired paths. However, you should make sure that the shell on your path (named by the ‘`SHELL`’ environment variable) is publicly readable. Remember that gdb uses the shell to start your program—some systems refuse to let gdb debug child processes whose programs are not readable.