Next: , Previous: Using History Interactively, Up: Top


Appendix C GDBのインストール

GDBには、 インストールのための準備作業を自動化するconfigureスクリプトが付属しています。 configureを実行した後にmakeを実行することで、 gdbをビルドすることができます。

GDBディストリビューションには、 GDBをビルドするのに必要なすべてのソース・コードが、 単一のディレクトリの下に収められています。 このディレクトリの名前は通常、 ‘gdb’の後ろにバージョン番号を付加したものです。

例えば、 バージョン4.18のGDBディストリビューションは、 gdb-4.18というディレクトリに収められています。 このディレクトリには、 以下のものが含まれます。

gdb-4.18/configure (およびサポート・ファイル)
GDB、 および、 GDBが必要とするすべてのライブラリの構成を行うためのスクリプト
gdb-4.18/gdb
GDB自身に固有のソース
gdb-4.18/bfd
Binary File Descriptorライブラリのソース
gdb-4.18/include
gnuインクルード・ファイル
gdb-4.18/libiberty
-liberty’フリー・ソフトウェア・ライブラリのソース
gdb-4.18/opcodes
opcodeテーブルおよび逆アセンブラのライブラリのソース
gdb-4.18/readline
gnuコマンドライン・インターフェイスのソース
gdb-4.18/glob
gnuファイル名パターン・マッチング・サブルーチンのソース
gdb-4.18/mmalloc
メモリにマップされるgnu mallocパッケージのソース

GDBの構成とビルドを行う最も簡単な方法は、 gdb-version-numberソース・ディレクトリからconfigureを実行することです。 ここでの例では、 このディレクトリはgdb-4.18です。

もしまだgdb-version-numberソース・ディレクトリにいないのであれば、 まずそこに移動してください。 続いてconfigureを実行します。 GDBが実行されるプラットフォームの識別子を引数として渡します。

例えば、 以下のようにします。

     cd gdb-4.18
     ./configure host
     make

hostは、 GDBが実行されるプラットフォームを識別する識別子です。 例えば‘sun4’や‘decstation’などです (多くの場合hostは省略することができます。 この場合configureは、 ユーザのシステムを調べることによって正しい値を推定しようとします)。

configure host’を実行した後にmakeを実行することで、 bfdreadlinemmalloclibibertyの各ライブラリがビルドされ、 最後にgdb自体がビルドされます。 構成されたソース・ファイルやバイナリは、 対応するソース・ディレクトリに残されます。

configureはBourneシェル (/bin/sh) のスクリプトです。 ユーザが別のシェルを実行していて、 システムがこのことを自動的に認識してくれない場合は、 明示的にshにスクリプトを実行させる必要があるかもしれません。

     sh configure host

バージョン4.18のソース・ディレクトリであるgdb-4.18のように、 配下に複数のライブラリやプログラムのソース・ディレクトリを含むディレクトリからconfigureを実行すると、 configureは配下にあるそれぞれのディレクトリのための構成ファイルを作成します (‘--norecursion’オプションによって、 そうしないよう指定した場合は別です)。

GDBディストリビューションの中の特定のサブディレクトリを構成したいだけの場合には、 そのサブディレクトリからconfigureスクリプトを実行することができます。 ただし、 configureスクリプトへのパスを必ず指定してください。

例えば、 バージョン4.18では、 bfdサブディレクトリだけを構成するには以下のようにします。

     cd gdb-4.18/bfd
     ../configure host

gdbはどこにでもインストールできます。 あらかじめ固定されたパスは1つもありません。 ただし、 ユーザのパスにある (‘SHELL’環境変数により指定される) シェルが誰にでも読み込み可能であることを確かめる必要があります。 GDBはシェルを使ってユーザ・プログラムを起動するということを憶えておいてください。 子プロセスが読み込み不可のプログラムである場合、 システムによっては、 GDBがそれをデバッグするのを拒否します。