[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
make
が生成する非常に一般的なエラーのリストを示します。またそれらの
エラーがどのような意味を持ち、どう対処するかについても示します。
make
のエラーは致命的でない場合もあります。とくにコマンドスクリプト行に
プレフィックス-
がある場合、あるいはコマンド行に-k
オプションが
ある場合です。エラーが致命的な場合には、先頭に文字列***
がつきます。
エラーメッセージは先頭にプログラムの名前(通常は‘make’)がつくか、 あるいはmakefileでエラーが発見された場合はファイル名と問題のある行番号が つきます。
以下の一覧では、それらの共通のプレフィックスが残されます。
これらのエラーは本当はmake
のエラーではありません。
コマンドスクリプトの一部としてmake
が呼び出したプログラムが0でない
エラーコード(‘Error NN’)を返し、それをmake
が失敗と
解釈したもの、あるいは何かほかの異常な終了(なんらかのシグナルを伴う)の
仕方をしたという意味です。See section コマンドのエラー.。
メッセージに***
がつかず、サブプロセスが失敗している場合は、
makefileのルールは-
文字がつきます。その場合はmake
はエラーを
無視します。
これは、コマンドを読み込んだmake
がそれを理解できないことを
意味しています。GNUのmake
はさまざまな種類の区切り文字
(:
、=
、タブ文字など)を探してそのコマンド行の認識を
助けようとします。これも、適切なものをみつけられない場合です。
このメッセージのもっとも一般的な理由(非常に便利な、多くのMS-Windowsの
エディタの場合のように)は、タブ文字のかわりにスペースを伴う
コマンドスクリプトのインデントをしようとする場合です。この場合、
make
は2番目の書式のエラーを使用するでしょう。コマンドスクリプトの
すべての行はタブ文字で始める必要があることを覚えておいてください。たとえば、
8つのスペースはカウントされません。See section ルールのシンタックス.。
これは、makefileの先頭がコマンドスクリプトの一部のように見えるという
意味です。タブ文字で始まっているものの、(変数の割り当てのような)正しい
make
のコマンドが現われない場合です。コマンドスクリプトはつねに
ターゲットと関連している必要があります。
行において最初の空白でない文字がセミコロンである場合に2番目の書式が
生成されます。make
はルールのセクション"target: prerequisite"を
残していると解釈します。See section ルールのシンタックス.。
これは、make
がターゲットのビルドが必要であると判断したものの、
どのようにするかの明示的あるいは暗黙の命令(デフォルトのルールデータベースも
含めて)をmakefileで発見できないことを意味しています。
ファイルのビルドを望む場合、ターゲットがどのようにビルドされるかを記述した ルールをmakefileに追加する必要があります。ほかに考えられる問題の原因は makefileのなかのタイポ(ファイル名が違うなど)、あるいはソースツリーの 不完全さ(ビルドの不要なファイルで、必要条件だけの場合)などです。
前者は、コマンド行においてビルドされるべきターゲットを何も提供せず、
make
が読み込むべきmakefileをみつけられなかったことを意味しています。
後者は、なんらかのmakefileはみつかったものの、デフォルトターゲットが何も
含まれていず、コマンドラインでも何も与えられていない場合を意味しています。
GNU make
はこのような状況では何もできません。
See section Makefile指定の引数.。
コマンド行で指定されたmakefileがみつからなかった(1番目の書式)か、 インクルードされたmakefileがみつからなかった場合(2番目の書式)。
GNU make
はターゲットごとに1つだけ指定されるコマンドを許可します
(ダブルコロンルールを除いて)。コマンドを持つように定義されているターゲットに
コマンドを与えた場合、このワーニングが示され、コマンドの2番目のセットが
最初のセットを上書きしてしまいます。
See section 1つのターゲットに対する複数のルール.。
これは、ターゲットxxxの必要条件yyyのトレース後に、
make
が依存グラフにおけるループを発見したことを意味します。
これは、通常の(再帰的な)make
の変数xxxを定義して、それが
展開されたときに自身を参照しているということを示します。単純展開変数
(:=
)を使用、あるいは追加演算子(+=
)の使用のどちらかに
おいて許可されないことです。
See section 変数の使用法.。
これは、変数あるいはファンクションの参照で、括弧あるいはブラケットを適切に 閉じていないことを示しています。
これは、ファンクションに対して必要な数の引数を与えなかったことを 意味しています。ファンクションの引数についての詳細なドキュメントを 参照してください。See section テキスト変換のためのファンクション.。
これらは、静的なパターンルールが機能しない場合に生成されます。最初の意味は、
ルールのターゲットセクションにおいてパターンが何もないことを示しています。
2番目の意味は、ターゲットセクションに複数のパターンがあることを
意味しています。3番目の意味は、ターゲットがパターン文字(%
)を
含んでいないことを示しています。
See section 静的パターンルールのシンタックス.。
このワーニングは、サブのmake
が通信可能なシステムにおける
パラレル実行に関連したエラーをmake
が検出した際に出されます
(see section サブのmake
へのオプションの伝達.)。
また、再帰的な呼び出しのmake
プロセスが引数のリストに‘-jN’
(nは1より大きい)を強制的に付加された場合にもこのワーニングが
出されます。たとえば、MAKE
環境変数に‘make -j2’とセットした場合に
このワーニングが出されます。この場合、サブのmake
はほかのmake
プロセスと通信せず、自身が2つのジョブを持つように見せかけるでしょう。
make
プロセスは通信が可能なように、親プロセスが子プロセスに情報を
渡します。子プロセスが実際にはmake
ではない場合、これが問題になるため、
親プロセスは、子プロセスがmake
であると認識した場合にだけ情報を渡し
ます。親プロセスは通常のアルゴリズムを使用してこの決定を行ないます
(see section MAKE
変数の働き.)。
子プロセスがmake
であることを親プロセスが知らないでmakefileが
構築される場合、子プロセスは必要な情報の一部しか受け取ることができません。
このような場合、子プロセスはこのワーニングを生成し、連続した方法で
そのビルドを継続します。
[ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は新堂 安孝によって2009年9月22日にtexi2html 1.82を用いて生成されました。