0

这是我第一次尝试构建内核模块。以下是制作文件。在运行 make 命令时。我得到错误

/bin/sh:语法错误:“(”意外

make: *** [全部] 错误 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)
4

2 回答 2

1

uname -r内核版本(由 这意味着 a) 它作为路径的一部分表现不佳,并且 b) shell 不喜欢在 Make 命令的中间接收它。我建议你把括号翻译成下划线:

KDIR=/lib/modules/$(shell uname -r | sed s/[\(\)]/_/g)/build

uname -r也可以给你正斜杠,如果需要,你可以用同样的方式处理。)

于 2010-09-05T18:43:30.763 回答
0

您应该正确引用论点,即

${MAKE} -C "${KDIR}" M="${PWD}" modules

此外,clean:你应该同样使用

${MAKE} -C "${KDIR}" M="${PWD}" clean

而不是尝试将 Kbuild 自己生成的所有文件与一些通配符匹配(这不是面向未来的)。

于 2010-11-21T13:35:41.673 回答