Chinaunix
标题:
模块编译的makefile
[打印本页]
作者:
stuman
时间:
2014-07-06 18:52
标题:
模块编译的makefile
ifneq ($(KERNELRELEASE),)
# call from kernel build system
scull-objs := main.o pipe.o access.o
obj-m := scull.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD)/../include modules
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
depend .depend dep:
$(CC) $(CFLAGS) -M *.c > .depend
ifeq (.depend,$(wildcard .depend))
include .depend
endif
复制代码
当执行make命令时,会执行makefile的第一个规则,如果第一个规则依赖于下面的规则,那么会执行其余的规则。但是这里depend .depend dep代表的规则没有放入前面的规则的依赖中,那么这个规则何时执行呢?还有按道理应该生成一个.depend文件,为什么我找不到这个文件呢?
作者:
stuman
时间:
2014-07-11 19:06
没人回答吗?自己顶一下
作者:
黎明748
时间:
2014-07-12 08:18
你不放依赖项怎么执行。一定要执行的话就make depend
作者:
黎明748
时间:
2014-07-12 08:52
本帖最后由 黎明748 于 2014-07-12 08:53 编辑
depend .depend dep:
$(CC) $(CFLAGS) -M *.c > .depend
//这个是多目标规则,在这里无意义,详细看GNU makefile
ifeq (.depend,$(wildcard .depend))
include .depend
endif
//当前工作目录下有.depend时,包含.depend
要生成.depend文件执行make depend
作者:
stuman
时间:
2014-07-12 14:53
这里需要编译一个模块,模块的主文件里用include包含了自己的头文件。如果这个依赖不执行,那么岂不是无法侦测到头文件的改变了?
作者:
chishanmingshen
时间:
2014-07-16 14:50
回复
5#
stuman
你试试不就知道了,改改头文件试试。
作者:
stuman
时间:
2014-07-16 21:05
关键是make depend的时候出错,而且好像不是列出依赖,而是去编译模块了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2