makefile

本文以包含main.c和bloomfilter.c的工程为例,介绍了简单Makefile文件的编写,如使用-lm选项查找数学函数库。还阐述了Makefile中include命令的作用及执行逻辑,最后指出若有多个规则目标相同,仅最后一个规则命令会在依赖文件更新时执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
例子:一个工程包括main.c和bloomfilter.c文件,bloomfilter.c中用到了数学函数log
简单的Makefile文件如下所示:
在这里插入图片描述
其中:main.o依赖于bloomfilter.o,因此main.o必须写在bloomfilter.o前面,当要使用数学函数时,由于数学函数位于libm.so库文件和math.h文件,gcc需要使用-lm选项告诉编译器,程序中的数学函数要到这个库文件中查找(一般位于/lib目录下)

makefile中include的作用:https://www.cnblogs.com/cuckoos/articles/5049984.html
Makefile中的include命令和c语言中的include命令类似,例如include file.dep,即把文件file.dep文件中的内容包含进当前的makefile文件中。假设Makefile文件中的所有规则组成的集合为u1;由file.dep文件中的所有规则组成的集合称为u2;u1和u2的并集称为集合u。
makefile中的include命令先将file.dep包含进当前Makefile文件(第一次包含),这样Makefile文件中就有了file.dep文件的内容;(断点A)
然后在集合u中检查是否有以file.dep为目标的规则。如果u中没有一file.dep为目标的规则,或者虽然有以file.dep为目标的规则,但根据依赖关系(即便在规则中的命令执行后也)不能使得file.dep文件更新,则Makefile文件最终包含的就是file.dep文件当前的内容,include命令执行结束;(断点B)
如果集合u中有以file.dep为目标的规则,并且该规则使得file.dep文件发生了更新,则include命令将更新后的file.dep文件再次包含进当前的Makefile文件(再次包含),跳转到断点A往下继续执行。

Makefile文件注意点:
1、Makefile文件中,如果有两个或者两个以上规则具有相同的目标,则在这些规则中,任一规则中的依赖文件的更新都会导致规则中的命令执行。并且只会导致最后一个规则中的命令被执行,前面规则的命令被忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值