• ベストアンサー

makefileを実行すると・・・

タイトルの通り、makefileを実行したところ、次のようなエラーが出ました。 make: *** No targets. Stop. 考えられる理由としては、何がありますでしょうか? ちなみにmakefileを使わず普通に実行すると成功したので、makefile自体に問題があると思います。 使用しているのはMacのターミナルです。 次がmakefileの内容です。 #Makefile CC = gcc CFLAG = -03 MFLAG = -lm SRC = main.c open.c read_write.c OBJ = main.o open.o read_write.o all:dummy dummy:$(OBJ) $(CC)$(CFLAG) -o dummy $(OBJ) $(MFLAG) main.o: main.c $(CC)$(CFLAG) -c main.c open.o: open.c $(CC)$(CFLAG) -c open.c read_write.o: read_write.c $(CC)$(CFLAG) -c read_write.c clean: rm -f *.o

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.8

やはり、ファイル名周りのトラブルのように思えます。 makefileをたとえばmymakefileなどに名前を変えてみてください。 それで、 make -f mynamefile main.o とするとどうなりますか? gcc -O3 -c main.c となれば、まだましですが。。。。

mine135
質問者

お礼

返信が遅くなってしまいました。 解決しました。macを使っているのですが、makefileの書式をUNIXにするとなぜかできました。 どうやら改行に問題があったようです。 いろいろとありがとうございました!

その他の回答 (7)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.7

もう一つ可能性に気がつきました。 Makefileのファイル名をtypoしたり、全角が混じったりしてないでしょうか? > make main.oとすると > cc -c -o main.o main.c が表示され、 というところから、Makefileで定義したはずの -O3が反映されていないことが分かります。 make -f Makefile などとしてファイル名を明示的に指定して makeどういう挙動を示すか確認してみてください。

mine135
質問者

補足

回答ありがとうございます。 make -f Makefile としてみると、同様にmake: *** No targets. Stop.と表示されてしまいました・・・

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.6

症状としては all:dummy の行がないとか、うまくmakeコマンドに認識されてないということです。 ただ、質問文のMakefileを取り出して別のUNIX機に持っていって欠落した行頭のタブを補ってみたところ正常にmakeは動作しました。質問文に出てきてない何か変な不可視文字が入っているとか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

どうも make が makefile を読んでいないっぽいので, あと思い付くのは makefile のあるディレクトリ (フォルダ) で make を実行していない可能性くらい? CFLAGS は -03 じゃなくて -O3 だけど.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

Makefile とか GNUMakefile って名前のファイルがある... ってことは, ないよなぁ....

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

all:dummy が怪しいのですが、これはmakefileの中身をcopy&pasteしたものでしょうか? どれかのもじが全角になったりしてませんか? あと make main.o make all など、ターゲットを明示的に指定するとどのような挙動になりますか?

mine135
質問者

補足

回答ありがとうございます。 >これはmakefileの中身をcopy&pasteしたものでしょうか? はい、そうです。 もう一度半角ですべて打ち直した後やってみましたが同じだったので 全角にはなっていないと思います。 make main.oとすると cc -c -o main.o main.c が表示され、 make allとすると make: *** No rule to make target `all'. Stop. と表示されました。

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.2

もう一つ。 シェルのパスで./にパスが通っていないとか?

mine135
質問者

補足

2回の回答ありがとうございます。 ですがすみません。こちらの回答にもう少し補足説明をお願いできますでしょうか?

  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.1

$(CC)$(CFLAG) の所は $(CC) $(CFLAG) とスペースがいるのではないかと思いますが。

関連するQ&A