You need to enable JavaScript to run this app. Linux环境下make执行Makefile报No such file or directory错误
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下make执行Makefile报No such file or directory错误

报错根本原因

这类报错和你编写的作业业务代码没有任何关联,纯粹是Makefile的规则格式违反了make的解析要求,具体有两个核心问题:

  • 命令块没有按换行分隔独立命令:你本来要先后执行「编译生成sync可执行文件」、「创建指向sync的assn4软链接」两个shell命令,但把两条命令的内容全部写在了同一行。make会把整行内容原样作为编译命令的参数传给gcc,导致编译器把ln、-sf、assn4这些软链接命令的内容,全部当成自己的输入文件、参数来解析,才会抛出一系列找不到文件、不识别参数的报错。
  • 存在潜在拼写笔误:你提供的Makefile文本里,编译参数写的是ssync.c,和实际执行输出里的sync.c不一致,需要核对本地实际的源文件名称,避免复制过程中的多打、漏打字符导致找不到文件的错误。

教授端可以正常运行,大概率是你复制Makefile内容到本地的时候,不小心把原本换行分隔的两条命令挤到了同一行,同时引入了拼写笔误。

修正后的可正常运行的Makefile
sync: sync.c prodcons.c prodcons.h producer.c producer.h consumer.c consumer.h Makefile
	# 注意下方两个命令行的行首必须是单个Tab字符,不能用空格代替
	${CC} -g -Wall -pthread -o sync sync.c prodcons.c producer.c consumer.c
	ln -sf sync assn4
修正时的必查细节
  • 每个独立shell命令必须独占一行,不能和其他命令拼接在同一行,初学阶段不要用;拼接命令,避免解析歧义
  • 规则命令行前的缩进必须是Tab字符,使用空格缩进会触发make的解析错误
  • 逐行核对所有源文件的文件名拼写,匹配本地实际存放的文件名

内容的提问来源于stack exchange,提问作者Westyn D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 23:27:08