$(MAKE) -C $(KDIR) M=$$PWD
时间: 2024-05-02 22:14:15 浏览: 20
$(MAKE) -C $(KDIR) M=$$PWD 是一个常见的Makefile命令,用于在Linux内核模块编译过程中调用make命令。
具体来说这个命令的作用是在指定的内核源码目录$(KDIR)中执行make命令,并将当前目录($$PWD)作为参数传递给make命令。这样可以编译当前目录下的内核模块。
在这个命令中,$(MAKE)是make命令的变量,$(KDIR)是内核源码目录的变量,$$PWD表示当前目录的路径。
相关问题
ifneq ($(KERNELRELEASE),) obj-m:=DriverFramework.o else KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) all: make -C $(KDIR) M=$(PWD) modules clean: make -C $(KDIR) M=$(PWD) clean endif
这段代码是什么意思呢?
这是一个 Makefile 文件,用于编译 Linux 内核模块。
第一行的 ifneq 表示如果 KERNELRELEASE 变量已经定义了,就执行下面的 obj-m 命令,否则执行下面的 KDIR 和 PWD 命令。
如果 KERNELRELEASE 已经定义了,说明这个 Makefile 是被内核源码树中的 Makefile 调用的,这时候要编译内核模块,所以要执行 obj-m 命令来生成目标文件。
如果 KERNELRELEASE 没有被定义,说明这个 Makefile 是被用户手动调用的,这时候要编译内核模块,所以要执行 KDIR 和 PWD 命令来设置内核源码树的路径和当前路径。然后执行 make 命令来编译内核模块。
最后,如果用户执行了 make clean 命令,就会执行 make 命令中的 clean 命令来清除编译生成的文件。
# Makefile5.3 obj-m := hello.o PWD := $(shell pwd) KVER ?= $(shell uname -r) KDIR := /lib/modules/$(KVER)/build all: $(MAKE) -C $(KDIR) M=$(PWD) #注意这里不是空格,是tab clean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.mod *.symvers *.order
这是一个简单的Linux内核模块的Makefile文件。该Makefile文件用于编译一个名为hello的内核模块。以下是各行代码的解释:
- `obj-m := hello.o`:指定模块名为hello.o,即编译后生成的内核模块文件名为hello.ko。
- `PWD := $(shell pwd)`:获取当前工作目录。
- `KVER ?= $(shell uname -r)`:获取当前内核版本号。
- `KDIR := /lib/modules/$(KVER)/build`:指定内核源码目录。
- `all: $(MAKE) -C $(KDIR) M=$(PWD)`:编译内核模块。
- `clean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.mod *.symvers *.order`:清除编译生成的文件。
在执行`make`命令时,会调用`all`目标,执行内核模块的编译。在执行`make clean`命令时,会调用`clean`目标,清除编译生成的文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)