Отладка с помощью GDB - B. Установка GDB
[Содержание] [Назад] [Пред] [Вверх] [След] [Вперед]B. Установка GDB
GDB поставляется вместе со сценарием configure
, который
автоматизирует процесс подготовки GDB к установке; затем вы можете
использовать make
для построения программы gdb
.
(20)
Дистрибутив GDB включает весь исходный код, который вам понадобится для GDB, в одном каталоге, имя которого обычно составляется добавлением номера версии к `gdb'.
Например, дистрибутив GDB версии 5.0 находится в каталоге `gdb-5.0'. Этот каталог содержит:
gdb-5.0/configure (и файлы поддержки)
- сценарий для конфигурации GDB и всех поддерживаемых библиотек
gdb-5.0/gdb
- исходные тексты, специфичные для самого GDB
gdb-5.0/bfd
- исходные тексты для библиотеки описания двоичных файлов (Binary File Descriptor)
gdb-5.0/include
- включаемые файлы GNU
gdb-5.0/libiberty
- исходные тексты для `-liberty' библиотеки свободного программного обеспечения
gdb-5.0/opcodes
- исходные тексты библиотеки таблиц кодов операций и дисассемблеров
gdb-5.0/readline
- исходные тексты интерфейса командной строки GNU
gdb-5.0/glob
- исходные тексты подпрограммы GNU сопоставления с образцом имени файла
gdb-5.0/mmalloc
- исходные тексты пакета GNU для выделения памяти
Простейший способ сконфигурировать и собрать 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 отлаживать дочерние
процессы, чьи программы недоступны для чтения.
22.2 Компиляция 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 на каждой рабочей машине); они
не будут конфликтовать друг с другом.
22.3 Определение имен рабочих и целевых машин
Спецификации, использованные для рабочих и целевых машин в сценарии
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).
22.4 Ключи 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=имя-каталога
-
Предупреждение: использование этого ключа требует GNU
make
или другой программыmake
, реализующей возможностиVPATH
.
Используйте этот ключ для создания конфигураций в каталогах, отдельных от исходного каталога GDB. Кроме всего прочего, вы можете использовать его для построения (или поддержки) нескольких конфигураций одновременно в отдельных каталогах.configure
записывает файлы, относящиеся к конфигурации, в текущий каталог, но принимает меры, чтобы можно было использовать источники в каталоге имя-каталога.configure
создает каталоги внутри рабочего каталога параллельно с исходными каталогами внутри имя-каталога. --norecursion
-
Конфигурировать только тот уровень каталогов, где выполняется
configure
; не распространять конфигурацию на подкаталоги. --target=цель
- Конфигурировать GDB для кросс-отладки программ, выполняемых на указанной цели. Без этого ключа GDB конфигурируется для отладки программ, выполняемых на той же машине (платформе), что и сам GDB. Нет никакого удобного способа сгенерировать список всех доступных целей.
платформа ...
- Конфигуровать GDB для выполнения на указанной платформе. Нет никакого удобного способа сгенерировать список всех допустимых платформ.
Существует также много других ключей, но обычно они требуются только для специальных целей.
[Содержание] [Назад] [Пред] [Вверх] [След] [Вперед]