Makefile:1:***缺少分隔符。停止

时间:2015-12-03 17:26:43

标签: linux

我的makefile是

 obj - m+= jurgen.o
all:
        [Tab] -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
        [Tab] -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

2 个答案:

答案 0 :(得分:3)

你的间距看起来很奇怪。

第1行是

obj - m+= jurgen.o

我希望

obj-m += jurgen.o

此外:

您可以简化文件的其余部分:

.PHONY:%
all: modules

build_dir = /lib/modules/$(shell uname -r)/build

%:
    $(MAKE) -C $(build_dir) M=$(PWD) $@

我减少了重复,并将构建目录放入一个可覆盖的变量中,以便您可以编译任何具有标题的内核,而不仅仅是当前运行的内核。我还添加了.PHONY,因此名为allclean的文件不会阻止Make执行其工作。

答案 1 :(得分:3)

“标准”模块Makefile:

obj-m    := jurgen.o

KDIR    := /lib/modules/$(shell uname -r)/build
PWD    := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:
    rm -rf *.o *.ko *.mod.* *.symvers *.order