GDB поставляется вместе со сценарием configure
, который
автоматизирует процесс подготовки GDB к установке; затем вы можете
использовать make
для построения программы gdb
.
(20)
Дистрибутив GDB включает весь исходный код, который вам понадобится для GDB, в одном каталоге, имя которого обычно составляется добавлением номера версии к `gdb'.
Например, дистрибутив GDB версии 5.0 находится в каталоге `gdb-5.0'. Этот каталог содержит:
gdb-5.0/configure (и файлы поддержки)
gdb-5.0/gdb
gdb-5.0/bfd
gdb-5.0/include
gdb-5.0/libiberty
gdb-5.0/opcodes
gdb-5.0/readline
gdb-5.0/glob
gdb-5.0/mmalloc
Простейший способ сконфигурировать и собрать GDB состоит в
выполнении configure
из исходного каталога
`gdb-номер-версии', который в этом примере есть
`gdb-5.0'.
Сперва перейдите в исходный каталог `gdb-номер-версии', если вы
еще не находитесь в нем; затем запустите configure
. Передайте в
качестве аргумента идентификатор платформы, на которой будет выполняться
GDB.
Например:
cd gdb-5.0 ./configure платформа make
где платформа -- идентификатор, такой как `sun4' или
`decstation', задающий платформу, на которой будет выполняться
GDB. (Часто вы
можете опустить платформу; configure
пытается определить
корректное значение, изучая вашу систему.)
Выполнение `configure платформа' и затем make
строит
библиотеки `bfd', `readline', `mmalloc' и
`libiberty', а затем сам gdb
. Сконфигурированные исходные
файлы, а также двоичные файлы, остаются в соответствующих исходных
каталогах.
configure
является сценарием оболочки Bourne (/bin/sh
); если
ваша система не распознает это автоматически, когда вы находитесь в
другой оболочке, вам может потребоваться выполнить sh
явно:
sh configure платформа
Если вы выполните configure
из каталога, содержащего исходные
каталоги для нескольких библиотек или программ, например
`gdb-5.0' для версии 5.0, configure
создает файлы конфигурации для всех подкаталогов низшего уровня (если вы не
велите ему не этого делать ключом `--norecursion').
Вы можете выполнить сценарий configure
из любого подкаталога из
поставки GDB, если вы хотите сконфигурировать только этот
подкаталог, но убедитесь, что указали путь к нему.
Например, для версии 5.0, чтобы сконфигурировать только подкаталог
bfd
, введите:
cd gdb-5.0/bfd ../configure платформа
Вы можете установить gdb
куда угодно; он не имеет никаких
жестко заданных путей. Однако, вы должны удостовериться, что ваша оболочка
(определяемая переменной среды `SHELL') доступна всем для чтения.
Помните, что GDB использует оболочку для запуска вашей
программы -- некоторые системы не позволяют GDB отлаживать
дочерние процессы, чьи программы недоступны для чтения.
Если вы хотите запускать версии GDB на нескольких рабочих или
целевых машинах, вам нужны различные gdb
, скомпилированные для
каждой комбинации рабочей и целевой машины. configure
разработан
так, чтобы облегчить это, позволяя вам создавать каждую конфигурацию в
отдельном подкаталоге, а не в исходном каталоге. Если ваша программа
make
поддерживает возможности `VPATH' (GNU make
поддерживает), вызов make
в каждом из этих каталогов строит
программу gdb
, определенную там.
Чтобы построить gdb
в отдельном каталоге, запустите configure
с
ключом `--srcdir', для определения, где искать исходники. (Вам также
нужно определить путь для поиска configure
из вашего рабочего каталога.
Если путь к configure
совпадает с параметром `--srcdir',
ключ `--srcdir' можно опустить; он подразумевается.)
Например, в версии 5.0, вы можете построить GDB в отдельном каталоге для Sun 4 так:
cd gdb-5.0 mkdir ../gdb-sun4 cd ../gdb-sun4 ../gdb-5.0/configure sun4 make
Когда configure
строит конфигурацию, используя удаленный
каталог с исходниками, он создает дерево для двоичных файлов с той же
структурой (и используя те же имена), что и дерево каталогов с
исходными текстами. В этом примере, вы бы нашли библиотеку Sun 4
`libiberty.a' в каталоге `gdb-sun4/libiberty', а сам
GDB -- в `gdb-sun4/gdb'.
Одна из распространенных причин построения нескольких конфигураций
GDB в отдельных каталогах состоит в том, чтобы конфигурировать
GDB для кросс-компиляции (где GDB запускается на
одной машине -- рабочей, в то время как отлаживаемые программы
выполняются на другой машине -- целевой). Вы определяете целевую
машину кросс-отладки ключом configure
`--target=цель'.
Когда вы выполняете make
для построения программы или библиотеки,
вы должны выполнять ее из сконфигурированного каталога -- того каталога,
из которого вы вызывали configure
(или из одного из его подкаталогов).
Makefile
, который создает configure
в каждом исходном
каталоге, также выполняется рекурсивно. Если вы ввели
make
в каталоге с исходными файлами, например в
`gdb-5.0' (или в каталоге, сконфигурированном отдельно
посредством `--srcdir=имя-каталога/gdb-5.0'),
вы построите все требуемые библиотеки и затем GDB.
Когда у вас имеется несколько рабочих или целевых конфигураций в
отдельных каталогах, вы можете запустить make
для них параллельно
(например, если они смонтированы по NFS на каждой рабочей машине); они
не будут конфликтовать друг с другом.
Спецификации, использованные для рабочих и целевых машин в сценарии
configure
, именуются в соответствии со схемой именования,
состоящей из трех частей, но поддерживаются также некоторые короткие
предопределенные синонимы. Полная схема именования кодирует три
фрагмента информации по следующему образцу:
архитектура-производитель-ОС
Например, вы можете использовать синоним sun4
как параметр
платформа или как значение цель в ключе
--target=цель
.
Эквивалентное полное имя -- `sparc-sun-sunos4'.
Сценарий configure
, сопровождающий GDB, не предоставляет
никаких средств для запроса вывода всех поддерживаемых имен рабочих и
целевых машин или их сокращений. configure
вызывает сценарий
оболочки Bourne config.sub
для отображения сокращений в полные
имена; при желании, вы можете посмотреть сценарий или использовать его
для проверки ваших предположений о сокращениях. Например:
% sh config.sub i386-linux i386-pc-linux-gnu % sh config.sub alpha-linux alpha-unknown-linux-gnu % sh config.sub hp9k700 hppa1.1-hp-hpux % sh config.sub sun4 sparc-sun-sunos4.1.1 % sh config.sub sun3 m68k-sun-sunos4.1.1 % sh config.sub i986v Invalid configuration `i986v': machine `i986v' not recognized
config.sub
также распространяется в исходном каталоге
GDB (`gdb-5.0', для версии 5.0).
configure
Здесь приводится обзор ключей и параметров configure
, которые
наиболее часто используются для построения GDB.
configure
также имеет несколько других ключей, не представленных
здесь. См. Info-файл файл `configure.info', нода `What Configure Does', для полного
объяснения configure
.
configure [--help] [--prefix=каталог] [--exec-prefix=каталог] [--srcdir=имя-каталога] [--norecursion] [--rm] [--target=цель] платформа
Если хотите, можете вводить ключи с одним `-', а не с `--'; но если вы используете `--', вы можете сокращать имена ключей.
--help
configure
.
--prefix=каталог
--exec-prefix=каталог
--srcdir=имя-каталога
make
или другой программы make
, реализующей возможности
VPATH
.configure
записывает файлы, относящиеся к конфигурации, в текущий
каталог, но принимает меры, чтобы можно было использовать исходники в
каталоге имя-каталога. configure
создает каталоги внутри
рабочего каталога параллельно с исходными каталогами внутри имя-каталога.
--norecursion
configure
; не распространять конфигурацию на подкаталоги.
--target=цель
платформа ...
Существует также много других ключей, но обычно они требуются только для специальных целей.