当前位置: 技术问答>linux和unix
makefile 的规则疑问,请教。
来源: 互联网 发布时间:2017-03-01
本文导语: 我最近在看《GNU Linux 编程指南》,在其中的第四章makefile中,有个小小疑问: 总共3个文件: helper.h helper.c howdy.c 中包含了helper.h头文件,就这样。 按理说,写makefile的时候只需要: howdy: howdy.o helper.o gcc howdy.o...
我最近在看《GNU Linux 编程指南》,在其中的第四章makefile中,有个小小疑问:
总共3个文件:
helper.h
helper.c
howdy.c 中包含了helper.h头文件,就这样。
按理说,写makefile的时候只需要:
就可以了,而且我运行也没问题。
但是,为什么书上在第一句的依赖项,非得要加上一个 helper.h呢?
howdy: howdy.o helper.o helper.h
这没必要吧。我后面在设定helper.o 的时候不是已经包含了helper.h吗?
总共3个文件:
helper.h
helper.c
howdy.c 中包含了helper.h头文件,就这样。
按理说,写makefile的时候只需要:
howdy: howdy.o helper.o
gcc howdy.o helper.o -o howdy
howdy.o: howdy.c
gcc -c howdy.c
helper.o:helper.h helper.c
gcc -c helper.c
clean:
rm howdy *.o
就可以了,而且我运行也没问题。
但是,为什么书上在第一句的依赖项,非得要加上一个 helper.h呢?
howdy: howdy.o helper.o helper.h
这没必要吧。我后面在设定helper.o 的时候不是已经包含了helper.h吗?
|
howdy: howdy.o helper.o helper.h
这个不影响编译
只是明确表示一个依赖关系:howdy执行程序依赖于helper.h
这样helper.h改动后,直接make就能更新howdy
如果没有这儿的这个helper.h,那么helper.h更新后,执行make,将会提示“没有什么可以编译的”
这个不影响编译
只是明确表示一个依赖关系:howdy执行程序依赖于helper.h
这样helper.h改动后,直接make就能更新howdy
如果没有这儿的这个helper.h,那么helper.h更新后,执行make,将会提示“没有什么可以编译的”
|
makefile好多都可以省略的,书上的是比较正规的,随着深入你就知道了
|
书上的东西也不是100%正确的,当然你自己运行过的才是正确的。呵呵
理论上都是.o文件了,已经到链接的阶段了,应该是不需要.h文件了。
理论上都是.o文件了,已经到链接的阶段了,应该是不需要.h文件了。