GDBにはインストールのための準備手続きを自動化するconfigure
スクリプトがついてきます。
configure
を実行後、
make
を実行することでgdb
を作成することができます。
(10)
GDBディストリビューションには、
GDBを作成するのに必要なすべてのソース・コードが、
単一のディレクトリの下に収められています。
このディレクトリの名前は通常、
`gdb'の後ろにバージョン番号を付加したものです。
例えば、
バージョン4.17
のGDBディストリビューションは、
`gdb-4.17
'というディレクトリに収められています。
このディレクトリには、
以下のものが含まれます。
gdb-4.17
/configure (およびサポート・ファイル)
gdb-4.17
/gdb
gdb-4.17
/bfd
gdb-4.17
/include
gdb-4.17
/libiberty
gdb-4.17
/opcodes
gdb-4.17
/readline
gdb-4.17
/glob
gdb-4.17
/mmalloc
GDBの設定と構築を行う最も簡単な方法は、
`gdb-version-number'ソース・ディレクトリからconfigure
を実行することです。
ここでの例では、
このディレクトリは`gdb-4.17
'です。
もしまだ`gdb-version-number'ソース・ディレクトリにいないのであれば、
まずそこに移動してください。
続いてconfigure
を実行します。
GDBが実行されるプラットフォームの識別子を引数として渡します。
例えば、
以下のようにします。
cd gdb-4.17 ./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
バージョン4.17
のソース・ディレクトリである`gdb-4.17
'のように、
配下に複数のライブラリやプログラムのソース・ディレクトリを含むディレクトリからconfigure
を実行すると、
configure
は配下にあるそれぞれのディレクトリのための設定ファイルを作成します
(`--norecursion'オプションによって、
そうしないよう指定した場合は別です)。
GDBディストリビューションの中の特定のサブディレクトリを設定したいだけの場合には、
そのサブディレクトリからconfigure
スクリプトを実行することができます。
ただし、
configure
スクリプトへのパスを必ず指定してください。
例えば、
バージョン4.17
では、
bfd
サブディレクトリだけを設定するには以下のようにします。
cd gdb-4.17 /bfd ../configure host
gdb
はどこにでもインストールできます。
あらかじめ固定されたパスは1つもありません。
ただし、
ユーザのパスにある
(`SHELL'環境変数により指定される)
シェルが誰にでも読み込み可能であることを確かめる必要があります。
GDBはシェルを使ってユーザ・プログラムを起動するということを憶えておいてください。
子プロセスが読み込み不可のプログラムである場合、
システムによっては、
GDBがそれをデバッグするのを拒否します。
いくつかのホスト・マシンやターゲット・マシン用のGDBを実行したい場合、
ホストとターゲットの個々の組み合わせ用にコンパイルされた異なるgdb
が必要になります。
configure
には個々の設定をソース・ディレクトリにではなく個別のサブディレクトリに生成する機能があり、
このようなことが簡単にできるように設計されています。
ユーザの使っているmake
プログラムに`VPATH'機能があれば
(GNU make
にはあります)、
これら個々のディレクトリにおいてmake
を実行することで、
そこで指定されているgdb
プログラムを構築することができます。
個別のディレクトリにおいてgdb
を構築するには、
ソースの置かれている場所を指定するために`--srcdir'オプションを使ってconfigure
を実行します
(同時に、
ユーザの作業ディレクトリからconfigure
を見つけるためのパスも指定する必要があります。
もし、
configure
へのパスが`--srcdir'への引数として指定するものと同じであれば、
`--srcdir'オプションは指定しなくてもかまいません。
指定されなければ同じであると仮定されます)。
例えば、
バージョン4.17
でSun 4用に別のディレクトリにおいてGDBを構築するには、
以下のようにします。
cd gdb-4.17 mkdir ../gdb-sun4 cd ../gdb-sun4 ../gdb-4.17 /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-4.17
'
(あるいは、
`--srcdir=dirname/gdb-4.17
'により設定された別のディレクトリ)
のようなソース・ディレクトリにおいてmake
を実行すると、
必要とされるすべてのライブラリが構築され、
続いてGDBが構築されることになります。
複数のホストもしくはターゲットの設定が、
異なる複数のディレクトリに存在する場合、
(例えば、
それらが個々のホスト上にNFSマウントされていれば)
並行してmake
を実行することができます。
複数の設定が互いに干渉し合うということはありません。
configure
スクリプトにおけるホスト、
ターゲットの仕様は、
3つの名称部分により構成されるものですが、
あらかじめ定義された別名もいくつかサポートされています。
完全名は、
以下のようなパターンの3つの情報部分を持ちます。
architecture-vendor-os
例えば、
--target=target
オプションのtargetの部分に、
あるいは、
ホストを指定する引数hostとして、
sun4
という別名を使うことができます。
これと同等の完全名は`sparc-sun-sunos4'です。
GDBについてくるconfigure
スクリプトには、
サポートされているすべてのホスト名、
ターゲット名、
別名を問い合わせするための機能はありません。
configure
はBourneシェル・スクリプトのconfig.sub
を呼んで、
省略名を完全名に対応付けします。
これを使って、
省略名の意味がユーザの推測したものと合っているかどうかをテストすることもできます。
以下に例を示します。
% sh config.sub sun4 sparc-sun-sunos4.1.1 % sh config.sub sun3 m68k-sun-sunos4.1.1 % sh config.sub decstation mips-dec-ultrix4.2 % sh config.sub hp300bsd m68k-hp-bsd % sh config.sub i386v i386-unknown-sysv % sh config.sub i786v Invalid configuration `i786v': machine `i786v' not recognized
config.sub
もGDBディストリビューションの一部としてソース・ディレクトリ
(バージョン4.17
では、`gdb-4.17
')
に入っています。
configure
オプション
以下に、
GDBを構築する上で最もよく役に立つconfigure
のオプション、
引数の要約を示します。
configure
には、
ここには挙げられていないオプションもいくつかあります。
configure
に関する完全な説明については、
See Info file `configure.info', node `What Configure Does'。
configure [--help] [--prefix=dir] [--srcdir=dirname] [--norecursion] [--rm] [--target=target] host
`--'ではなく単一の`-'でオプションを始めることもできますが、 `--'を使うとオプション名を省略することができます。
--help
configure
の実行方法の簡単な要約を表示します。
-prefix=dir
--srcdir=dirname
make
もしくはVPATH
機能を持つ他のmake
を使用する必要があります。configure
は設定に固有のファイルをカレント・ディレクトリにおいて書き込みますが、
dirnameディレクトリにあるソースを使うように、
それらのファイルを調整します。
configure
はdirnameディレクトリの配下のソース・ディレクトリに対応するディレクトリを作業ディレクトリの下に作成します。
--norecursion
configure
が実行されたディレクトリのみを設定します。
サブディレクトリまで含めて設定することはしません。
--rm
--target=target
host ...
configure
はこれ以外のオプションも受け付けます。
しかし、
それは他のGNUツールを再帰的に設定する場合に問題が発生しないようにするためです。
ここに挙げたオプションだけが、
GDBおよびその支援ライブラリに影響を与えます。