2012-05-14 9 views
5

私はlinux driver devを初めて使用しています。yield "コマンドが最初のターゲットの前に開始"エラー

私は、HelloWorldのドライバを書いています。ここ

はコードです:

CC=gcc 
    MODFLAGS:= -O3 -Wall -DLINUX 
    module.o: module.c 
    $(CC) $(MODFLAGS) -c module.c 

しかし、私はmakeコマンドを実行したときに、私は次のようにあります:

#define MODULE 
#define __KERNEL__ 
#include <module.h> 
int init_module() 
{ 
return 0; 
} 

void cleanup_module() 
{ 
return; 
} 

、ここでは、メイクファイルである メイク:3:*は「開始コマンド最初のターゲット」のエラーの前に

いただきました!間違っていますか?

+1

これらのスペースはメイクファイルの左余白にありますか?またはタブ? – Beta

+0

メイクファイルにタブがあります – user1284151

答えて

9

コマンドではないすべての行から、メイクファイルで有数のタブを削除します。私は違うと同じエラーメッセージが発生し、これがあなたのためのケースではなかったが

CC=gcc 
MODFLAGS:= -O3 -Wall -DLINUX 
module.o: module.c 
    $(CC) $(MODFLAGS) -c module.c 
1

理由。だから、私はここでも答えているので、将来、エラーメッセージに遭遇したときに人々を助けるかもしれないが、その理由はあなたの場合と同じくらい明らかではない。ここで

は、単にその名前(私は=のみファイル名に一致していますデモンストレーションの目的のために、明らかにこちら)$(wildcard)と一致するの等号を持つファイルを持つことにより、エラー状態を誘発するために、最小限の例です。厳密に言えば、$(FILES)変数の名前を取得するためにどのメソッドを使用するかは関係ありません。

FILES := $(wildcard ./*=*) 

.PHONY: all 

define foo 
all: something-$(1) 
something-$(1): $(1) 
    cat $$^ > [email protected] 
endef 

$(foreach goal,$(sort $(FILES)),$(eval $(call foo,$(goal)))) 

この問題は、拡張が行われる方法にあるように見えます。この場合、マクロによってのみ発生します。また、バージョンコントロールに応じて - - 変わっていないメイクファイル自体をしながら、私はこのエラーメッセージになってしまったとき

とにかく、私は困惑しました。それが私にもたらされるまで、問題のためのいくつかの状況上の理由がなければならない。将来の人が答えを探すのに役立つかもしれません。

関連する問題