2 ly601579033 ly601579033 于 2014.12.09 12:19 提问

关于简单内核模块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_install

clean:
rm -rf .o *~ core .depend ..cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean
else
obj-m := globalmem.o
endif

ifeq ($(KERNELRELEASE),)这一句执行之后,else便不会再执行,但是为什么else还能起作用呢???

是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???

4个回答

ly601579033
ly601579033   2014.12.10 15:38
已采纳

@ Drifter011 ,对对,就是这里不明白。按照代码分析——这句应该不起作用啊~~~但是按照逻辑分析——这句话应该起作用。就是这里不太明白
不知道代码怎么执行的???

eagleyan
eagleyan   Rxr 2014.12.09 12:42

你的问题不清楚,“else便不会再执行,但是为什么else还能起作用呢???”是什么意思?

ly601579033
ly601579033   2014.12.09 13:13

哦,是这样的
ifeq...else...endif
也就是说,ifeq满足条件,那么就会执行下面的语句,而else就不会被执行了,否则执行else
也就是说他们两个只有一个会起作用,但是我发现他们两个都起作用了,改任何一个都会报错,为什么???

nanjian011
nanjian011   2014.12.10 15:26

是不是后面还有类似obj-m := globalmem.o的语句在起作用

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!