makeが生成し、垣間見る事になるであろうもっとも共通なエラーのリストとそのエラー修復方法についての情報を示します。
 特に行の先頭に-があったり、-kコマンドラインオプションが指定された場合は、makeエラーが致命的にならない事があります。致命的なエラーについては***という文字列を前につけています。
エラーメッセージはどれも(大抵は`make'という)プログラムの名前が前についているか、或いはmakefileにエラーがある場合にはファイルの名前と行番号を問題報告に含めるかしてあります。
下の表では共通な前文は除外しています。
makeのエラーとは全く違うものです。これはmakeがコマンドスクリプトの一部で呼び出したプログラムが0以外のエラーコード(`Error NN')を返したという意味で、makeがこれを失敗と解釈したか、(ある種のシグナルを伴った)別の以上な方法で終了したかになります。
***がメッセージについていないなら、サブ処理は失敗したがmakefileのルールで-という特別な文字が前についていたためmakeがそのエラーを無視したという事です。
makeの一般的な「はぁ?」というエラーメッセージです。makeがmakefileのその行の解析に完全に成功しなかったという事であり、基本的には「構文エラー」という意味です。
このメッセージが出力されるのは、あなた(か、おそらく、多くのMS-Windowsのエディタなどのような、とっても助けになるエディタ)がタブ文字の代わりにスペースでコマンドスクリプトをインデント(字下げ)しようと試みていた、というのが最も一般的な理由の一つです。
コマンドスクリプトの行はすべて、絶対にタブ文字で始まらなければならない事を憶えておいて下さい。8つのスペースは含めてはならないのです。
makeで定められたコマンドが見当たらない、という事です。コマンドスクリプトはターゲットに常に関連していなければなりません。
生成される第二の要因は、セミコロンが空白ではない最初の文字として行にある場合で、makeはこれを行の"ターゲット: 依存関係"の項目を省いたと解釈します。
makeがターゲットをビルドする必要があると判断したのにビルド方法について(デフォルトルールデータベースの中も含めて)明示的・暗黙にmakefileで指示が全く見つからなかったという意味です。
そのファイルをビルドしたいならmakefileにそのターゲットがどうやってビルドされるかを述べるルールを追加する必要があるでしょう。原因として考え得るその他の可能性は、(ファイル名が間違っているといった場合の)makefileの誤植や(ビルドがサポートされていないファイルで、依存関係だけにあるという場合の)ソースツリーの堕落です。
makeが読み込むmakefileを全く検出できなかったという意味です。後者はmakefileはいくつか見つかったがデフォルトターゲットが含まれていなくてコマンドラインでも与えられなかったという意味です。こういう状況ではGNU makeは全くすることがありません。
makeは(二重コロンルールは例外ですが)ターゲット一つにつきコマンドを一度だけ指定する事が許されています。既にコマンドを持たせて定義してあるターゲットにコマンドを与えた場合にこの警告が出て最初のコマンド群を第二のコマンド群で上書きすることになります。
makeが依存関係の図にループがあるのを見破ったという意味で、xxxというターゲットのyyyという依存関係を追跡するとその依存関係などのどれか一つがxxxに依存しているという事です。
make変数をそこで定義していて、展開されたときに自分自身(xxx)を参照する事になる、という意味です。
これは許されていない事であるため、単純展開変数(:=)か追加オペレータ(+=)かのどちらかを用いてください。
%)を含まないターゲットという意味です。