这是我第一次尝试构建核心模块。以下是make文件。在运行make命令。我收到了错误
/ bin / sh:语法错误:“(”意外
make:*** [all]错误2
obj-m =mod.o
obj-m +=depmod.o
obj-m +=mod1.o
obj-m +=mod2.o
obj-m +=mod3.o
KDIR=/lib/modules/$(shell uname -r)/build
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf $(wildcard *.o *.ko *.mod.* .c* .t* test Module.symvers *.order *.markers)
答案 0 :(得分:1)
内核版本(由uname -r
给出)可以在其中加上括号,在这种情况下我敢打赌。这意味着a)它不能很好地作为路径的一部分,并且b)shell不喜欢在Make命令的中间接收它。我建议你将括号翻译成下划线:
KDIR=/lib/modules/$(shell uname -r | sed s/[\(\)]/_/g)/build
(uname -r
还可以为您提供正斜杠,如果必须,可以采用相同的方式处理。)
答案 1 :(得分:0)
你应正确引用这些论点,即
${MAKE} -C "${KDIR}" M="${PWD}" modules
此外,对于clean:
,您应该同样使用
${MAKE} -C "${KDIR}" M="${PWD}" clean
而不是试图将Kbuild自己生成的所有文件与一些通配符匹配(这不是面向未来的)。