Makefile用于将每个c源文件编译为Linux内核模块

时间:2015-04-12 02:48:55

标签: c makefile linux-kernel

我有一个充满c源文件的目录,每个文件都可以编译成一个独立的内核模块,以下Makefile不起作用:

sources := $(wildcard *.c)
obj-m += $(patsubst %.c,%.o,$(sources))

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

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

但如果我使用obj-m += mod1.o mod2.o,这将有效。

2 个答案:

答案 0 :(得分:1)

您可以使用makefile

中的以下片段
obj-m += $(subst .c,.o, $(wildcard *.c))

subst会将.c后缀替换为.o

答案 1 :(得分:0)

尝试使用类似的东西:

obj-m += $(sources:.c=.o)