Debugging with GDB: Running Configure

Next: Separate Objdir, Previous: Requirements, Up: Installing GDB [Contents][Index]

### 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.10.1.20160210-cvs distribution is in the `gdb-7.10.1.20160210-cvs` directory. That directory contains:

`gdb-7.10.1.20160210-cvs/configure (and supporting files)`

  script for configuring GDB and all its supporting libraries

`gdb-7.10.1.20160210-cvs/gdb`

  the source specific to GDB itself

`gdb-7.10.1.20160210-cvs/bfd`

  source for the Binary File Descriptor library

`gdb-7.10.1.20160210-cvs/include`

  GNU include files

`gdb-7.10.1.20160210-cvs/libiberty`

  source for the ‘`-liberty`’ free software library

`gdb-7.10.1.20160210-cvs/opcodes`

  source for the library of opcode tables and disassemblers

`gdb-7.10.1.20160210-cvs/readline`

  source for the GNU command-line interface

`gdb-7.10.1.20160210-cvs/glob`

  source for the GNU filename pattern-matching subroutine

`gdb-7.10.1.20160210-cvs/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-7.10.1.20160210-cvs` 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-7.10.1.20160210-cvs
    ./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-7.10.1.20160210-cvs` source directory for version 7.10.1.20160210-cvs, `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.

Next: Separate Objdir, Previous: Requirements, Up: Installing GDB [Contents][Index]