免费注册 查看新帖 |

Chinaunix

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

问个关于make的问题,小白问题,大家帮忙,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-13 22:28 |只看该作者 |倒序浏览
makefile如下:

main:main.c    fun1.c   fun2.c
            gcc    fun1.c   fun2.c    main.c   -o main
clean:
            rm  fun               

1,在命令行下面输入:make 后编译成功,rm命令没有执行,我把他解释成clean目标的依赖并不比clean新
但是,为什么执行make clean 后,rm命令就执行了呢,clean目标的依赖依旧不比clean新阿

之所以提出这个问题是因为 执行make main并不引起对gcc命令的执行(前提是前面已经执行过make),这说明make后面加上目标名称,并不会引起强行执行目标所对应的指令


2,而gun make上说

clean:

        rm -f *.o lexer.c


Normally, phony targets will always be executed because the commands associated with the rule do not create the target name.
我试验过了,clean默认是不执行的,到底是怎么回事啊

[ 本帖最后由 xdshting 于 2008-12-13 23:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-12-13 23:18 |只看该作者
.PHONY: clean

论坛徽章:
0
3 [报告]
发表于 2008-12-13 23:24 |只看该作者
原帖由 xiaonanln 于 2008-12-13 23:18 发表
.PHONY: clean

这不是问题的所在,我试了

结论是
伪目标不是默认执行的,必须用make clean

这与make 的默认规则相矛盾,因为默认情况时依赖没有更新的话,目标文件也不会更新的,比如说make main对应的命令就不会执行,因为以来每更新

但是,clean的依赖也没有更新啊,但为什么make clean对应的命令执行了

论坛徽章:
0
4 [报告]
发表于 2008-12-13 23:43 |只看该作者
在命令行下面输入:make 后编译成功,rm命令没有执行,我把他解释成clean目标的依赖并不比clean新
但是,为什么执行make clean 后,rm命令就执行了呢,clean目标的依赖依旧不比clean新阿


你make的时候,rm命令为什么要执行?
直接make,后面不加tag的时候,make只会执行makefile的第一个tag。

论坛徽章:
0
5 [报告]
发表于 2008-12-13 23:46 |只看该作者
再说 你的clean依赖什么了 ?
什么文件也没有和它关联啊

论坛徽章:
0
6 [报告]
发表于 2008-12-13 23:53 |只看该作者
是啊
默认执行第一个tag

论坛徽章:
0
7 [报告]
发表于 2008-12-13 23:54 |只看该作者
原帖由 Fixend 于 2008-12-13 23:43 发表


你make的时候,rm命令为什么要执行?
直接make,后面不加tag的时候,make只会执行makefile的第一个tag


学到一点东西,谢谢

但是,make clean为什么会引发后面的命令执行?clean后的依赖为空啊,没用更新阿?

论坛徽章:
0
8 [报告]
发表于 2008-12-14 00:00 |只看该作者
原帖由 xdshting 于 2008-12-13 23:54 发表


学到一点东西,谢谢

但是,make clean为什么会引发后面的命令执行?clean后的依赖为空啊,没用更新阿?

因为依赖为空,所以make clean的时候,clean后面的命令总是执行的。

论坛徽章:
0
9 [报告]
发表于 2008-12-14 00:13 |只看该作者
原帖由 Fixend 于 2008-12-14 00:00 发表

因为依赖为空,所以make clean的时候,clean后面的命令总是执行的。

这么说,这是一个规定

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2008-12-14 16:26 |只看该作者

回复 #9 xdshting 的帖子

你可以这么认为
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP