Contents|Index|Previous|Next
Compiling GDB in another directory
If you want to run GDB versions for several host or target machines, you need
a different gdb compiled for each combination of host and target. configure is designed to make this easy by allowing you to generate each configuration
in a separate subdirectory, rather than in the source directory. If your make
program handles the ‘VPATH’ feature (GNU make does; for more on the VPATH option, see GNU Make in GNUPro Advanced Topics), running make in each of these directories builds the gdb program specified there.
To build
gdb in a separate directory, run configure with the ‘--srcdir’ option to specify where to find the source. (You also need to specify a path
to find configure itself from your working directory. If the path to configure would be the same as the argument to ‘--srcdir’, you can leave out the ‘--srcdir’ option; it is assumed.) For example, with version 4.15-97r1, you can build
GDB in a separate directory for a Sun 4 like this:
cd gdb-4.15-97r1
mkdir ../gdb-sun4
cd ../gdb-sun4
../gdb-4.15-97r1/configure sun4
make
When configure builds a configuration using a remote source directory, it creates a tree for
the binaries with the same structure (and using the same names) as the tree
under the source directory. In the example, you’d find the Sun 4 library ‘libiberty.a’ in the directory ‘gdb-sun4/libiberty’, and GDB itself in ‘gdb-sun4/gdb’.
One popular reason to build several GDB configurations in separate directories
is to configure GDB for cross-compiling (where GDB runs on one machine—the host—while debugging programs that run on another machine—the target).
You specify a cross-debugging target by giving the ‘
--target=target’ option to configure.
When you run
make to build a program or library, you must run it in a configured
directory—whatever directory you were in when you called configure (or one of its subdirectories).
The
Makefile that configure generates in each source directory also runs recursively.
If you type
make in a source directory such as ‘gdb-4.15-97r1’ (or in a separate directory configured with ‘--srcdir=dirname/gdb-4.15-97r1’), you will build all the required libraries, and then build GDB.
When you have multiple hosts or targets configured in separate directories,
you can run
make on them in parallel (for example, if they are NFS-mounted on each of the
hosts); they will not interfere with each other.