问题描述
- 关于简单内核模块Makefile文件???
-
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_installclean:
rm -rf .o *~ core .depend ..cmd *.ko *.mod.c .tmp_versions.PHONY: modules modules_install clean
else
obj-m := globalmem.o
endififeq ($(KERNELRELEASE),)这一句执行之后,else便不会再执行,但是为什么else还能起作用呢???
是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???
解决方案
@ Drifter011 ,对对,就是这里不明白。按照代码分析——这句应该不起作用啊~~~但是按照逻辑分析——这句话应该起作用。就是这里不太明白
不知道代码怎么执行的???
解决方案二:
你的问题不清楚,“else便不会再执行,但是为什么else还能起作用呢???”是什么意思?
解决方案三:
哦,是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???
解决方案四:
是不是后面还有类似obj-m := globalmem.o的语句在起作用
时间: 2024-09-12 17:09:30