GDBには、
インストールのための準備作業を自動化するconfigure
スクリプトが付属しています。
configure
を実行した後にmake
を実行することで、
gdb
をビルドすることができます。
(24)
GDBディストリビューションには、 GDBをビルドするのに必要なすべてのソース・コードが、 単一のディレクトリの下に収められています。 このディレクトリの名前は通常、 `gdb'の後ろにバージョン番号を付加したものです。
例えば、 バージョン5.0のGDBディストリビューションは、 `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の構成とビルドを行う最も簡単な方法は、
`gdb-version-number'ソース・ディレクトリからconfigure
を実行することです。
ここでの例では、
このディレクトリは`gdb-5.0'です。
もしまだ`gdb-version-number'ソース・ディレクトリにいないのであれば、
まずそこに移動してください。
続いてconfigure
を実行します。
GDBが実行されるプラットフォームの識別子を引数として渡します。
例えば、 以下のようにします。
cd gdb-5.0 ./configure host make
hostは、
GDBが実行されるプラットフォームを識別する識別子です。
例えば`sun4'や`decstation'などです
(多くの場合hostは省略することができます。
この場合configure
は、
ユーザのシステムを調べることによって正しい値を推定しようとします)。
`configure host'を実行した後にmake
を実行することで、
`bfd'、
`readline'、
`mmalloc'、
`libiberty'の各ライブラリがビルドされ、
最後にgdb
自体がビルドされます。
構成されたソース・ファイルやバイナリは、
対応するソース・ディレクトリに残されます。
configure
はBourneシェル
(/bin/sh
)
のスクリプトです。
ユーザが別のシェルを実行していて、
システムがこのことを自動的に認識してくれない場合は、
明示的にsh
にスクリプトを実行させる必要があるかもしれません。
sh configure host
バージョン5.0のソース・ディレクトリである`gdb-5.0'のように、
配下に複数のライブラリやプログラムのソース・ディレクトリを含むディレクトリからconfigure
を実行すると、
configure
は配下にあるそれぞれのディレクトリのための構成ファイルを作成します
(`--norecursion'オプションによって、
そうしないよう指定した場合は別です)。
GDBディストリビューションの中の特定のサブディレクトリを構成したいだけの場合には、
そのサブディレクトリからconfigure
スクリプトを実行することができます。
ただし、
configure
スクリプトへのパスを必ず指定してください。
例えば、
バージョン5.0では、
bfd
サブディレクトリだけを構成するには以下のようにします。
cd gdb-5.0/bfd ../configure host
gdb
はどこにでもインストールできます。
あらかじめ固定されたパスは1つもありません。
ただし、
ユーザのパスにある
(`SHELL'環境変数により指定される)
シェルが誰にでも読み取り可能であることを確かめる必要があります。
GDBはシェルを使ってユーザ・プログラムを起動するということを憶えておいてください。
子プロセスが読み取り不可のプログラムである場合、
システムによっては、
GDBがそれをデバッグするのを拒否します。
いくつかのホスト・マシンおよびターゲット・マシン用のGDBを実行したい場合、
ホストとターゲットの個々の組み合わせ用にコンパイルされた異なるgdb
が必要になります。
configure
には、
個々の構成をソース・ディレクトリにではなく個別のサブディレクトリに生成する機能があり、
このようなことが簡単にできるように設計されています。
ユーザの使っているmake
プログラムに`VPATH'機能があれば
(GNU make
にはあります)、
これら個々のディレクトリにおいてmake
を実行することで、
そこで指定されているgdb
プログラムをビルドすることができます。
個別のディレクトリにおいてgdb
をビルドするには、
ソースの置かれている場所を指定するために、
`--srcdir'オプションを使ってconfigure
を実行します
(同時に、
ユーザの作業ディレクトリからconfigure
を見つけるためのパスも指定する必要があります。
もし、
configure
へのパスが`--srcdir'への引数として指定するものと同じであれば、
`--srcdir'オプションは指定しなくてもかまいません。
指定されなければ、
同じであると仮定されます)。
例えば、 バージョン5.0でSun 4用のGDBを別のディレクトリにおいてビルドするには、 以下のようにします。
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=target'オプションを使って指定します。
プログラムやライブラリをビルドするためにmake
を実行するときには、
構成されたディレクトリにいなければなりません。
これは、
configure
を実行したときにいたディレクトリ
(または、
そのサブディレクトリの1つ)
です。
configure
が個別のソース・ディレクトリに生成したMakefile
は再帰的に呼び出されます。
`gdb-5.0'
(あるいは、
`--srcdir=dirname/gdb-5.0'により構成された別のディレクトリ)
などのソース・ディレクトリにおいてmake
を実行すると、
必要とされるすべてのライブラリがビルドされ、
その後にGDBがビルドされることになります。
複数のホストまたはターゲットの構成が、
異なる複数のディレクトリに存在する場合、
(例えば、
それらが個々のホスト上にNFSマウントされている場合)
並行してmake
を実行することができます。
複数の構成が互いに干渉し合うということはありません。
configure
スクリプトにおけるホストおよびターゲットの指定方法は、
3つの名称部分を持ちますが、
あらかじめ定義された短い別名もいくつかサポートされています。
完全名は、
以下のようなパターンの3つの情報部分を持ちます。
architecture-vendor-os
例えば、
ホストを指定する引数hostとして、
あるいは、
--target=target
オプションのtargetの部分に、
sun4
という別名を使うことができます。
これと同等の完全名は`sparc-sun-sunos4'です。
GDBに付属しているconfigure
スクリプトには、
サポートされているすべてのホスト名、
ターゲット名、
および、
別名を問い合わせするための機能はありません。
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ディストリビューションの一部としてソース・ディレクトリ
(バージョン5.0では、`gdb-5.0')
に入っています。
configure
オプション
以下に、
GDBをビルドする上でほとんどの場合に役に立つ
configure
のオプションと引数の要約を示します。
configure
には、
ここには挙げられていないオプションもいくつかあります。
configure
に関する完全な説明については、
Infoファイル`configure.info'のノード`What Configure Does'を参照してください。
configure [--help] [--prefix=dir] [--exec-prefix=dir] [--srcdir=dirname] [--norecursion] [--rm] [--target=target] host
そうしたいのであれば、 `--'ではなく単一の`-'でオプションを始めることもできますが、 `--'を使うとオプション名を省略することができます。
--help
configure
の実行方法の簡単な要約を表示します。
--prefix=dir
--exec-prefix=dir
--srcdir=dirname
make
、
あるいは、
VPATH
機能を持つ他のmake
を使用する必要があります。configure
は、
構成に固有のファイルをカレント・ディレクトリに書き込みますが、
dirnameディレクトリにあるソースを使うように、
それらのファイルの内容を調整します。
configure
は、
dirnameディレクトリ配下のソース・ディレクトリ・ツリーと同じ構造を持つディレクトリ・ツリーを、
作業ディレクトリの下に作成します。
--norecursion
configure
が実行されたディレクトリ・レベルだけを構成します。
サブディレクトリまで含めて構成することはしません。
--target=target
host ...
ほかにも利用可能な多くのオプションがありますが、 これは通常、 特殊な目的にのみ必要とされるものです。