[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.13 ターゲット機種とコンパイラバージョンの指定

デフォルトでは、GCC は、読者が使っているのと同じタイプの機種用に コードをコンパイルする。だが、クロスコンパイラとしてインストールする こともでき、何か他のタイプの機種用にコンパイルすることも可能である。 実際、色々なコンフィギュレーションの GCC を、色々な対象機種に 対して、同じにインストールすることが可能である。 そのどれを使うかは、‘-b’ オプションで指定する。

さらに、GCC の旧版と新版も同じにインストールすることができる。 そのうちの一つ(おそらく最新版)がデフォルトになるが、別の版を 使いたいときもあるだろう。

-b machine

引数 machine は、コンパイルの対象となる機種を指定する。 GCC をクロスコンパイラとしてインストールしたときに便利である。

machine の値は、GCC をクロスコンパイラとしてコンフィギュレーション したときに指定したのと同じ機種になる。例えば、クロスコンパイラが ‘configure i386v’ としてコンフィギュレーションされているなら、 これは System V の稼働する 80386 マシン向けにコンパイルすることを 意味し、このコンフィギュレーション向けのコンパイラを実行するには ‘-b i386v’ と指定する。

-b’ を指定しないときは、普通は読者が使っているのと同じ型の機種用に コンパイルすることになる。

-V version

引数 version は、実行する GCC のバージョンを指定する。 これは複数のバージョンがインストールされているときに役に立つ。 例えば、version が ‘2.0’ なら、GCC のバージョン 2.0 を 実行することを意味する。

-V’ を指定しない場合の、デフォルトのバージョンは、 インストールされている GCC のうち最新版になる。

-b’ と ‘-V’ オプションの実際の仕組みは、コンパイルに 使う実行形式ファイルとライブラリファイル名の一部を変えることで 行なわれる。GCC のバージョンとターゲット機種が指定されていると、 ‘/usr/local/lib/gcc-lib/machine/version’ という ディレクトリに通常置かれている。

このため、読者のサイトで、‘-b’ や ‘-V’ の効果を カスタマイズするには、これらのディレクトリ名を変えたり、別の名前 (あるいはシンボリックリンク)を追加したりすれば良い。 ディレクトリ ‘/usr/local/lib/gcc-lib/’ で、 ‘80386’ というファイルが、‘i386v’ というファイルへのリンクに なっていると、‘-b 80386’ は、‘-b i386v’ のもう一つの 指定方法になる。

見方によっては、‘-b’ や ‘-V’ を指定したからと言って、 完全に別なコンパイラに変わるわけではない。最初に起動した 最上位のドライバプログラム gcc はそのまま動き続け、 実際の仕事を行なう他の実行形式(プリプロセッサ、コンパイラ本体、 アセンブラ、リンカ)を起動するのである。 しかし、ドライバプログラムは実際の仕事は何もしないので、 ドライバプログラムが、指定したターゲットとバージョン向けのもので なくても普通は問題はない。

ドライバプログラムがターゲット機種に関わってくる唯一の点は、 機種固有の特別なオプションのパースと取扱いである。 しかし、これも他の実行形式ファイル同様、指定したバージョンとターゲット 機種用のディレクトリに置かれているファイルにより制御されるのである。 結局、ドライバプログラムが一個インストールしてあれば、どのターゲット 機種やバージョンを指定しても適合するのである。

ただし、ドライバプログラムの実行形式は、一つ重要な点を取り扱う。 デフォルトのバージョンとターゲット機種である。 このため、ドライバプログラムの実体を、異なるターゲットとバージョン向けに 別々にコンパイルして、別の名前でインストールしても良い

たとえば、バージョン 2.0 用のドライバを ogcc としてインストールし、 バージョン 2.1 用のを gcc としてインストールしておくと、 gcc というほうのコマンドはデフォルトでバージョン 2.1 を使い、 ogcc のデフォルトは 2.0 になる。 しかし、どちらのコマンドを使っても、‘-V’ オプションを使えば どちらのバージョンでも指定できるのである


This document was generated using texi2html 1.78.