免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1393 | 回复: 6
打印 上一主题 下一主题

[硬件及驱动] 模块编译的makefile [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-06 18:52 |只看该作者 |倒序浏览
  1. ifneq ($(KERNELRELEASE),)
  2. # call from kernel build system

  3. scull-objs := main.o pipe.o access.o

  4. obj-m        := scull.o

  5. else

  6. KERNELDIR ?= /lib/modules/$(shell uname -r)/build
  7. PWD       := $(shell pwd)

  8. modules:
  9.         $(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(PWD)/../include modules

  10. endif



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

  13. depend .depend dep:
  14.         $(CC) $(CFLAGS) -M *.c > .depend


  15. ifeq (.depend,$(wildcard .depend))
  16. include .depend
  17. endif
复制代码
当执行make命令时,会执行makefile的第一个规则,如果第一个规则依赖于下面的规则,那么会执行其余的规则。但是这里depend .depend dep代表的规则没有放入前面的规则的依赖中,那么这个规则何时执行呢?还有按道理应该生成一个.depend文件,为什么我找不到这个文件呢?

论坛徽章:
0
2 [报告]
发表于 2014-07-11 19:06 |只看该作者
没人回答吗?自己顶一下

论坛徽章:
0
3 [报告]
发表于 2014-07-12 08:18 |只看该作者
你不放依赖项怎么执行。一定要执行的话就make depend

论坛徽章:
0
4 [报告]
发表于 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

论坛徽章:
0
5 [报告]
发表于 2014-07-12 14:53 |只看该作者
这里需要编译一个模块,模块的主文件里用include包含了自己的头文件。如果这个依赖不执行,那么岂不是无法侦测到头文件的改变了?

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2014-07-16 14:50 |只看该作者
回复 5# stuman


    你试试不就知道了,改改头文件试试。

论坛徽章:
0
7 [报告]
发表于 2014-07-16 21:05 |只看该作者
关键是make depend的时候出错,而且好像不是列出依赖,而是去编译模块了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP