该Makefile最好是和hello.c同样的路径
obj-m+=hello.o 表示编译生成的模块 前缀hello必须和.c文件相同
all:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) clean
解释以上:
指定内核源码的位置,进入内核编译
-C
内核源码的位置
/lib/modules/$(shell uname -r)/build/
指定编译的地址
M=$(PWD)
M=$(CURDIR)
编译模块放置位置
modules:默认是将源文件编译生成内核模块 放置 /lib/modules/$(uname -r)/extra/
modules_install:安装外部模块 建立环境变量指定位置INSTALL_MOD_PATH
删除
clean
多文件编译
如果多文件编译,我们需要指定文件
obj-m := foo.o bar.o
foo-y := a.o b.o c.o #后边的 生成foo.o的文件 必须保证有.o前缀的.c
bar-y := e.o d.o #后边的 生成bar.o的文件