如何解决Makefile报错:make: *** [Makefile:11: test] Error 3
报错原因
make 执行规则中的命令时,会检测命令的退出状态码:如果命令返回非0值,make 就会判定该命令执行失败,终止后续流程并抛出对应报错。
你运行的./ex2_q1 11 24 36 7 5输出统计到3个素数后,程序退出码为3,不是代表正常退出的0,因此被make判定为执行失败,抛出Error 3。
该问题大概率是你的ex2_q1的main函数直接把统计到的素数个数作为返回值return了,而没有返回默认的正常退出值0。
解决方案
可根据自身需求二选一:
- 如果你希望保持程序返回素数计数作为退出码的逻辑:只需要在Makefile的test规则命令前加
-,让make忽略该命令的错误即可,修改后test规则如下:test: ex2_q1 -./ex2_q1 11 24 36 7 5 - 如果你不需要程序返回素数计数:直接修改
ex2_q1.c的main函数,正常执行完成后返回0即可。
额外注意事项
你当前的Makefile中ex2_q1的依赖包含factors,但链接命令里没有链接factors.o,如果后续ex2_q1调用了factors.c中的函数会出现链接错误,建议根据实际逻辑调整:如果ex2_q1依赖factors的实现,链接命令需要补上factors.o:
ex2_q1: ex2_q1.o factors.o gcc -o ex2_q1 -Wall ex2_q1.o factors.o
内容的提问来源于stack exchange,提问作者Tl2
相关产品推荐
相关产品推荐

