ifneq ($(KERNELRELEASE),)
obj-m := kthread_stu_id.o
else
KERNELDIR ?=/root/raspberrypi-kernel-openEuler-22.03-LTS-SP2
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
.PHONY:clean
clean:
-rm *.mod.c *.o *.order *.symvers *.ko
1、ifneq ($(KERNELRELEASE),)
这一行检查KERNELRELEASE变量是否已经被定义。在内核构建系统调用Makefile时,它会定义KERNELRELEASE变量。因此,这个条件用来区分是直接调用Makefile(比如用户在命令行上输入make时)还是从内核的构建系统调用。
2、obj-m := stu.o
如果KERNELRELEASE被定义,说明Makefile是由内核构建系统调用的。在这种情况下,设置obj-m变量指示要构建名为stu.o的模块(这将生成stu.ko内核模块文件)。
3、else