内核模块使文件出现问题

时间:2010-09-05 16:11:14

标签: makefile kernel-module

这是我第一次尝试构建核心模块。以下是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)

2 个答案:

答案 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自己生成的所有文件与一些通配符匹配(这不是面向未来的)。