makeでよくあるエラー

missing separator

考えられる原因:コマンド行がTABで始まっていない.

$ make
Makefile:4: *** missing separator.  Stop.

Command not found

考えられる原因:マクロ定義を忘れている.

$ make
o hello hello.pas
make: o: Command not found
make: [hello] Error 127 (ignored)

これはどういうことかというと, Makefile内に, $(PC) -o $@ $< のようにマクロを使ったコマンド行が書いてある場合に, マクロPCの定義をし忘れた結果,$(PC)が空文字列になり, このコマンド行がマクロ展開により-o $@ $<になっている. ここで,コマンド行の先頭のマイナス記号(-)は, このコマンドが失敗におわってもmakeを続けるという意味のプレフィックスになることを考慮すると, このコマンド行は,o hello hello.pasとなる. したがって,makeはoというコマンドを呼び出してしまい, このコマンドが存在しないため,最終的に“Command not found”となる.

*** No rule to make target `hello', needed by `all'. Stop.

考えられる原因:.SUFFIXES:をかき忘れている.または,つづりが間違っている.

$ make
make: *** No rule to make target `hello', needed by `all'.  Stop.

このメッセージはいろんな理由ででてくるので,これだけ見てもなかなか原因がわからない. しかし,盲点になりやすいという意味で,.SUFFIXESの指定順などを確認してみるのは悪くないと思う.


はたいたかし
トップ > 開発ツール > make