Отладка с помощью 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 для выполнения на указанной платформе. Нет никакого удобного способа сгенерировать список всех допустимых платформ.

Существует также много других ключей, но обычно они требуются только для специальных целей.


[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]