Makefile报lib/ADC.c:2缺失分隔符错误(非制表符问题)
Make解析C源文件时出现"missing separator"错误
执行make时触发以下错误:
lib/ADC.c:2: *** missing separator. Stop.
关键信息
- 排除制表符问题:所有Makefile命令均使用真实制表符
lib/ADC.c是标准C代码,无语法异常- 错误指向文件第2行,但该行是合法的
#include "ADC.h" main.c中可正常使用的sam.h(通过ADC.h间接引用),在lib目录下的源文件中无法被正确找到- 仅保留
#include "sam.h"一行时,lib/ADC.c无法定位到same51/include目录下的sam.h
相关Makefile片段
INCLUDES := -I"same51" \ -I"same51/CMSIS/Include" \ -I"same51/include" \ -I"same51/startup" \ -I"lib" \ -I"same51/addons" # Sources SRCS := $(wildcard $(SRC_DIR)/*.c) $(wildcard lib/*.c) $(BUILD_DIR)/%.o: lib/%.c @echo Compiling lib: $< $(CC) $(CFLAGS) -D$(MCU_DEFINE) $(INCLUDES) -MD -MP -MF "$(@:.o=.d)" -MT"$@" -o "$@" "$<"
已排查内容
- 所有文件行尾均为LF,无CRLF格式问题
- Makefile中无多余冒号或格式错误的规则
- Makefile内不存在指向
lib/ADC.c:2的额外规则
sam.h内容
#ifndef _SAM_ #define _SAM_ #if defined(__SAME51G19A__) || defined(__ATSAME51G19A__) #include "same51g19a.h" #elif defined(__SAME51G18A__) || defined(__ATSAME51G18A__) #include "same51g18a.h" #elif defined(__SAME51N20A__) || defined(__ATSAME51N20A__) #include "same51n20a.h" #elif defined(__SAME51N19A__) || defined(__ATSAME51N19A__) #include "same51n19a.h" #elif defined(__SAME51J19A__) || defined(__ATSAME51J19A__) #include "same51j19a.h" #elif defined(__SAME51J18A__) || defined(__ATSAME51J18A__) #include "same51j18a.h" #elif defined(__SAME51J20A__) || defined(__ATSAME51J20A__) #include "same51j20a.h" #else #error Library does not support the specified device #endif #endif /* _SAM_ */
疑问
是否有人遇到过make将C源文件行解析为规则的情况?还有哪些原因会导致make在合法.c文件上报缺失分隔符错误?
内容的提问来源于stack exchange,提问作者abcMann
相关产品推荐
相关产品推荐

