对 makefile 中 .SUFFIXES 的学习体会
2012-09-21 10:57
211 查看
当前目录中存在 gao.g 文件(其实际内容是一个简单的C语言程序)
先是用如下的例子来看:例子一
运行结果是: no rule to make target gao.o...
也就是说 .SUFFIXES 和 %.o:%g 模式规则一起使用没有效果。
再看看如下的例子:把.SUFFIXES 去掉看看,例子二
运行结果仍然是:no rule to make target gao.o...
再看看如下的例子: 用传统格式 .g.o, 例子三
结果仍然是: no rule to make target gao.o...
再看看如下的例子,在前面例子的基础上,加入 .SUFFIXES
结果是,in .g.o
小结一下:.SUFFIXES 和 .a.b 格式可以相互配合, 和 %b:%a 是无法配合的。
再看 .SUFFIXES 和 .c .o 的关系:
把 gao.g 改名为 gao.c 。看下面的例子:
运行结果为 in .c.o,也就是说对于.c 文件编译成 .o 文件,没有 .SUFFIXES 也可以。
再改为模式规则格式:
运行结果为 in %o:%c ,模式规则也不依赖于 .SUFFIXES。
下面的略为跑题。当然,make 对 .c 文件 .o 文件都有自己的处理,比如什么都不写:
只有如下两句:
运行make 后的结果会怎么样:
cc -c -o gao.o gao.c
得到了一个 gao.o的文件,但是这个只是一个编译好但尚未链接的程序。
既使chmod 777 gao.o
再运行 ./gao.o 也会得到提示:bash unable to run binary file.
要想运行,还需要手工执行链接动作 :cc -o my.o gao.o。
如果没有makefile ,单纯执行,则是不带-c选项: cc -o gao.o gao.c ,可以得到可执行文件gao.o
先是用如下的例子来看:例子一
.SUFFIXES: .SUFFIXES: .g .o LIBS=gao.o all: $(LIBS) %.o:%g @echo "in %.o:%g"
运行结果是: no rule to make target gao.o...
也就是说 .SUFFIXES 和 %.o:%g 模式规则一起使用没有效果。
再看看如下的例子:把.SUFFIXES 去掉看看,例子二
LIBS=gao.o all: $(LIBS) %.o:%g @echo "in %.o:%g"
运行结果仍然是:no rule to make target gao.o...
再看看如下的例子: 用传统格式 .g.o, 例子三
LIBS=gao.o all: $(LIBS) .g.o: @echo "in .g.o"
结果仍然是: no rule to make target gao.o...
再看看如下的例子,在前面例子的基础上,加入 .SUFFIXES
.SUFFIXES: .SUFFIXES: .g .o LIBS=gao.o all: $(LIBS) .g.o: @echo "in .g.o"
结果是,in .g.o
小结一下:.SUFFIXES 和 .a.b 格式可以相互配合, 和 %b:%a 是无法配合的。
再看 .SUFFIXES 和 .c .o 的关系:
把 gao.g 改名为 gao.c 。看下面的例子:
LIBS=gao.o all:$(LIBS) .c.o: @echo "in .c.o"
运行结果为 in .c.o,也就是说对于.c 文件编译成 .o 文件,没有 .SUFFIXES 也可以。
再改为模式规则格式:
LIBS=gao.o all:$(LIBS) %o:%c @echo "in %o:%c"
运行结果为 in %o:%c ,模式规则也不依赖于 .SUFFIXES。
下面的略为跑题。当然,make 对 .c 文件 .o 文件都有自己的处理,比如什么都不写:
只有如下两句:
LIBS=gao.o all: $(LIBS)
运行make 后的结果会怎么样:
cc -c -o gao.o gao.c
得到了一个 gao.o的文件,但是这个只是一个编译好但尚未链接的程序。
既使chmod 777 gao.o
再运行 ./gao.o 也会得到提示:bash unable to run binary file.
要想运行,还需要手工执行链接动作 :cc -o my.o gao.o。
如果没有makefile ,单纯执行,则是不带-c选项: cc -o gao.o gao.c ,可以得到可执行文件gao.o
相关文章推荐
- 对 makefile 中 eval 函数的学习体会
- 对 makefile 中 .ONESHELL的学习体会
- 对 makefile 中 flavor 函数的学习体会
- 对 makefile 中 .IGNORE的学习体会
- 对 makefile 中 .EXPORT_ALL_VARIABLES 的学习体会
- 对 makefile 中 .NOTPARALLE 的学习体会
- 对 makefile 中 override 优先级的学习体会
- 对 makefile 中 $(MAKE) 的学习体会
- 对 makefile 中 .SECONDARY 的学习体会
- 对 makefile 中 .DELETE_ON_ERRORS 的学习体会
- K-近邻算法学习心得体会
- PHP带头大哥谈学习OO的一点体会!
- IIS 6.0学习心得体会(二)--实践篇
- 浅淡 “对 HOOK PE 的学习体会”
- 技术学习心得体会
- 好长时间没上了,呵呵!最近在学习Web Service,顺便写个简单的体会吧
- 学习asp.net的一些心德体会(2)
- F#学习体会
- 今日学习linux心得体会
- YouTube 架构学习体会