【问题标题】:Makefile for compiling each c source file into a Linux kernel moduleMakefile 用于将每个 c 源文件编译成 Linux 内核模块
【发布时间】:2015-04-12 02:48:54
【问题描述】:

我有一个目录,里面全是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,这将起作用。

【问题讨论】:

    标签: c makefile linux-kernel


    【解决方案1】:

    您可以使用makefile中的以下sn-p

    obj-m += $(subst .c,.o, $(wildcard *.c))
    

    subst 将替换 .c 后缀为 .o

    【讨论】:

      【解决方案2】:

      尝试使用类似的东西:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-08
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多