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
原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/13085201.html