GNU Make手册阅读笔记(9)-- 第十、十一章

第十章  Make的隐含规则

1.make 的主要隐含规则

1.        编译 C 程序

N.o ”自动由“ N.c 生成,执行命令为“ $(CC) -c $(CPPFLAGS) $(CFLAGS) ”。

2.        编译 C++ 程序

N.o ”自动由“ N.cc ”或者“ N.C 生成,执行命令为“ $(CXX) -c $(CPPFLAGS) $(CFLAGS) ”。建议使用“ .cc ”作为 C++ 源文件的后缀,而不是“ .C

3.        汇编和需要预处理的汇编程序

N.s ”是不需要预处理的汇编源文件,“ N.S ”是需要预处理的汇编源文件。汇编器为“ as ”。

N.o 可自动由“ N.s ”生成,执行命令是:“ $(AS) $(ASFLAGS) ”。

N.s 可由“ N.S ”生成, C 预编译器“ cpp ”,执行命令是:“ $(CPP) $(CPPFLAGS) ”。

4.        链接单一的 object 文件

N ”自动由“ N.o ”生成,通过 C 编译器使用链接器( GUN ld ),执行命令是:“ $(CC) $(LDFLAGS) N.o $(LOADLIBES) $(LDLIBS) ”。

此规则仅适用:由一个源文件直接产生可执行文件的情况。当需要有多个源文件共同来创建一个可执行文件时,需要在 Makefile 中增加隐含规则的依赖文件。例如:

x : y.o z.o

当“ x.c ”、“ y.c ”和“ z.c ”都存在时,规则执行如下命令:

cc -c x.c -o x.o

cc -c y.c -o y.o

cc -c z.c -o z.o

cc x.o y.o z.o -o x

rm -f x.o

rm -f y.o

rm -f z.o

在复杂的场合,目标文件和源文件之间不存在向上边那样的名字对应关系时(“ x ”和“ x.c ”对应,因此隐含规则在进行链接时,自动将“ x.c ”作为其依赖文件)。这时,需要在 Makefile 中明确给出描述目标依赖关系的规则。

 

通常, gcc 在编译源文件时(根据源文件的后缀名来启动相应的编译器),如果没有指定“ -c ”选项, gcc

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值