编译SDK示例时出现cc: error: this_example.o不存在错误如何解决
问题根因
1. 编译参数解析错误(核心直接原因)
你看到的报错命令里-I后面没有跟随路径,是因为Makefile中定义的INC_PATH ?= $(realpath ../inc)执行后返回了空值:当SDK上层目录不存在inc文件夹时,realpath命令执行失败无输出,最终CFLAGS中的-I$(INC_PATH)就变成了无参数的-I。
gcc解析参数时会把-I后面紧邻的-o当成头文件搜索路径,后续的this_example.o就被识别为待编译的输入源文件,自然会报「No such file or directory」的错误。
2. 目标变量定义不匹配
你定义的EXAMPLES=sdk_this_example_folder和实际编写的链接规则生成的目标this_example不一致,执行make all时会找不到对应目标的生成规则,会额外触发编译逻辑异常。
3. 可选排查项:规则缩进错误
Makefile要求每个编译规则下的命令行必须以制表符(TAB)开头,如果你的模式规则、链接规则下的命令行是用空格缩进的,make会无法正常识别命令,也可能触发异常。
修复方案
- 先确认SDK的头文件存放路径,修改
INC_PATH的取值为正确的头文件目录绝对/相对路径,确保$(realpath ../inc)执行后能返回有效路径,不会为空 - 将
EXAMPLES的赋值修改为EXAMPLES=this_example,和你要生成的可执行文件名保持一致 - 检查所有编译命令行的缩进,确保都是以TAB开头,不是多个空格
内容的提问来源于stack exchange,提问作者Fikayo97
相关产品推荐
相关产品推荐

