次のMakefileは動作しませんが、何が起こっているのかわかりません

次のMakefileは動作しませんが、何が起こっているのかわかりません
obj-m += task.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Makefile:3: *** 区切り文字がありません。停止します。

答え1

エントリの前に実際のタブ文字があることを確認してください。例:

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

単なるスペースではなく、タブ文字 \t である必要があります。

確認するには、以下を実行しますcat -T Makefile:

$ cat -T Makefile 
all:
^Iecho "foo"
foo:
^Iecho "bar"

^Iタブ文字を示します。全てターゲットに続く行はタブインデントされます。

関連情報