2401_83591674 2024-10-09 23:09 采纳率: 80.3%
浏览 47
已结题

报错make: *** [Makefile:114: build/main.elf] Error 1


TARGET = main
DEBUG = 1
OPT = -Og

BUILD_DIR = build
PREFIX = arm-none-eabi-
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S

C_SOURCES =  \
HARDWARE/scr/iic.c\
USER/main.c\
USER/global.c\
HARDWARE/scr/delay.c\
HARDWARE/scr/usart1.c\
HARDWARE/scr/stm32f10x_it.c\
HARDWARE/scr/led.c\
HARDWARE/scr/timer2.c\
HARDWARE/scr/sys.c\
HARDWARE/MLX90614/mlx90614.c\
HARDWARE/GP2Y/GP2Y.c\
HARDWARE/GUI/GUI.c\
HARDWARE/SPI/SPI.c\
HARDWARE/LCD/LCD.c\
HARDWARE/Servo/Servo.c\
System/PWM.c\
CORE/core_cm3.c\
CORE/system_stm32f10x.c\
STLIB/src/misc.c\
STLIB/src/stm32f10x_rcc.c\
STLIB/src/stm32f10x_tim.c\
STLIB/src/stm32f10x_usart.c\
STLIB/src/stm32f10x_gpio.c\
STLIB/src/stm32f10x_exti.c\
STLIB/src/stm32f10x_flash.c\
OneNet/device/esp8266.c\
OneNet/MQTT/MqttKit.c\

ASM_SOURCES =  \
startup_stm32f103xb.s

CPU = -mcpu=cortex-m3

MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)

AS_DEFS = 

C_DEFS =  \
-DARM_GCC \
-DSTM32F10X_MD \
-DUSE_STDPERIPH_DRIVER\
-DSTM32F10X_MD\

AS_INCLUDES =

C_INCLUDES =  \
-IUSER\
-ICORE\
-ISTLIB/inc\
-IHMAC/inc\
-IHARDWARE/inc\
-IOneNet/device\
-IOneNet/MQTT\
-IHARDWARE/GP2Y\
-IHARDWARE/LCD\
-IHARDWARE/GUI\
-IHARDWARE/SPI\
-IHARDWARE/Servo\
-ISystem\

ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections

ifeq ($(DEBUG), 1)
CFLAGS += -g -gdwarf-2
CFLAGS+=-std=c11
endif

CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" -finput-charset=UTF-8 -fexec-charset=GBK

LDSCRIPT = STM32F103C8Tx_FLASH.ld

LIBS = -lc -lm -lnosys -u _printf_float -u _scanf_float
LIBDIR = 
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections

all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin

OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
vpath %.c $(sort $(dir $(C_SOURCES)))
# list of ASM program objects
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
vpath %.s $(sort $(dir $(ASM_SOURCES)))

$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
    @echo build $@
    @$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
    

$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
    @echo build $@
    @$(AS) -c $(CFLAGS) $< -o $@


$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
    @echo build $@
    @$(CC) $(OBJECTS) $(LDFLAGS) -o $@
    @$(SZ) $@

$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
    $(HEX) $< $@
    
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
    $(BIN) $< $@    
    
$(BUILD_DIR):
    mkdir $@

clean:
    -rm -fR $(BUILD_DIR)

-include $(wildcard $(BUILD_DIR)/*.d)

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-10-09 23:10
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题是一个编译错误问题,关于使用 Makefile 进行构建时的错误。具体的错误信息提示在 make: *** [Makefile:114: build/main.elf] Error 1。这表明在执行 Makefile 中的第 114 行时发生了错误,导致构建失败。这通常是由于某些依赖项缺失、配置问题或代码错误导致的。让我们尝试通过以下几个方面来分析和解决这个问题:

    分析 Makefile 和构建过程:首先检查 Makefile 中涉及到的文件路径是否正确设置,包括源文件路径和编译器的路径等。确认这些路径是否存在且正确无误。此外,还需要检查编译器的配置是否正确,例如使用的编译器选项是否支持当前的环境和目标平台。在编译过程中出现错误可能是因为某些编译器选项不正确或者不支持当前的环境。

    检查依赖项和库文件:确认 Makefile 中引用的依赖项和库文件是否存在,并且路径设置正确。检查这些文件是否被正确地包含在构建过程中,并且在编译过程中可用。有时候缺失依赖项会导致构建失败。请检查是否需要安装或更新这些依赖项。

    检查代码错误:检查源代码中是否存在语法错误或逻辑错误,特别是在 C 和汇编语言文件中。错误可能出现在任何地方,例如语法错误、变量未定义或类型不匹配等。使用编译器提供的错误信息来确定代码中的错误位置并进行修复。

    清理并重新构建:尝试执行 make clean 命令清理构建目录中的文件,然后重新运行 make 命令进行构建。有时候清理旧的构建文件可以解决一些潜在的问题。

    检查目标平台和环境设置:确认目标平台(如 ARM 处理器)的编译器设置和环境配置是否正确无误。检查是否支持目标平台的编译器版本和环境要求。确保使用了正确的交叉编译工具链和相关环境配置来进行构建。检查工具链路径是否设置正确,以确保正确执行交叉编译过程。如果你是在使用 IDE 或其他集成工具进行开发,确保正确配置了目标平台和工具链的路径和设置。此外,还要确保使用的工具链版本与目标平台兼容。查看官方文档以获取更多关于目标平台和工具链设置的信息。如果这些方面没有问题,则可能是由于其他原因引起的错误,需要更深入地调查和解决。在解决问题的过程中,请确保仔细阅读和理解错误信息,并根据错误信息采取相应的措施进行修复。如果你能提供更多的错误信息或上下文信息,我可以更具体地帮助你解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月19日
  • 已采纳回答 10月11日
  • 创建了问题 10月9日