02-makefile的使用 makefile只执行到一半,就不执行,怎么回事

本文详细解析了Makefile的执行逻辑及依赖关系配置方法,通过具体的示例解释了如何正确设置目标及其依赖项,确保编译过程按预期进行。

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

main.o : factorial.h main.c 
gcc -c main.c

factorial.o : factorial.c factorial.h
gcc -c factorial.c 

all:main.o factorial.o
gcc -o test main.o factorial.o

clean:
rm -fr *.o test

只执行gcc -c main.c,生成main.o文件。不执行gcc -c factorial.c。
另外,如果将
factorial.o : factorial.c factorial.h
gcc -c factorial.c
放在文件的最前面,则只执行gcc -c factorial.c。
怎么回事,谢谢。编译没有错误。

 

 

你确定好依赖关系:

makefile不是按照顺序执行的,它只执行第一个目标和第一个目标所依赖的目标;

 

 

################################################

按照makefile的规则,编译总是默认第一个目标和目标依赖,那么
root#make       # 按照楼主的文件,这样只会编译main.o
root#make all   # 这样才会编译all,从而编译所有,如果楼主只想make,要将all放到最前边
root#make clean # 删除目标文件

all:main.o factorial.o
gcc -o test main.o factorial.o   # jernymy 此处要用tab

main.o : factorial.h main.c  
gcc -c main.c  # jernymy 此处要用tab

factorial.o : factorial.c factorial.h
gcc -c factorial.c  # jernymy 此处要用tab

clean:
rm -fr *.o test  # jernymy 此处要用tab
 

转载于:https://my.oschina.net/aslanjia/blog/699317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值