makefile
使用tab键
obj-m:=hello.o KDIR:=/lib/modules/$(shell uname -r)/build PWD:=$(shell pwd) default: $(MAKE) -C $(KDIR) M=$(PWD) modules clean: rm -f *.o *.ko
(2)shell pwd 取得当前工作路径
(3)shell uname -r 取得当前内核的版本号
(4)KDIR 当前内核的源代码目录。
(5)make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
这就是编译模块了:
a -- 首先改变目录到-C选项指定的位置(即内核源代码目录),其中保存有内核的顶层makefile;
b -- M=选项让该makefile在构造modules目标之前返回到模块源代码目录;
然后,modueles目标指向obj-m变量中设定的模块;在上面的例子中,我们将该变量设置成了hello.o。
3、编译多文件
若有多个源文件,则采用如下方法:
obj-m := hello.o
hello-objs := file1.o file2.o file3.o
用户态makefile all: gcc hello.c -o hello clean: rm -rf hello