Gcc Makefile.elf文件失败

Gcc Makefile.elf文件失败,gcc,makefile,stm32,Gcc,Makefile,Stm32,我尝试在源代码中使用main.cpp。我认为一切都很好,但我得到了错误,我有完全相同的makefile与不同的项目,我没有错误。但是我用Cubemx打开了这个新项目,并尝试在makefile中使用一些cpp设置,所以它不起作用 我得到以下信息: collect2: error: ld returned 1 exit status Makefile:195: recipe for target 'build/stm32f4_FlashflagTest.elf' failed make: *

我尝试在源代码中使用main.cpp。我认为一切都很好,但我得到了错误,我有完全相同的makefile与不同的项目,我没有错误。但是我用Cubemx打开了这个新项目,并尝试在makefile中使用一些cpp设置,所以它不起作用

我得到以下信息:

    collect2: error: ld returned 1 exit status
Makefile:195: recipe for target 'build/stm32f4_FlashflagTest.elf' failed
make: *** [build/stm32f4_FlashflagTest.elf] Error 1
我怎样才能解决这个问题? 这是我的makefile:

    ##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.5.2] date: [Fri Jul 24 10:23:57 TRT 2020]
##########################################################################################################################

# ------------------------------------------------
# Generic Makefile (based on gcc)
#
# ChangeLog :
#   2017-02-10 - Several enhancements + project update mode
#   2015-07-22 - first version
# ------------------------------------------------

######################################
# target
######################################
TARGET = stm32f4_FlashflagTest


######################################
# building variables
######################################
# debug build?
DEBUG = 1
# optimization
OPT = -Og


#######################################
# paths
#######################################
# Build path
BUILD_DIR = build

######################################
# source
######################################
# C sources
C_SOURCES =  \
Src/stm32f4xx_it.c \
Src/stm32f4xx_hal_msp.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c \
Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c \
Src/system_stm32f4xx.c \

# ASM sources
ASM_SOURCES =  \
startup_stm32f429xx.s

#CPP_SOURCES
CPP_SOURCES = \
Src/main.cpp \

# A_SOURCES
# A_SOURCES = $(wildcard Middlewares/STM32_Safety_STL/Src/*.a)

#######################################
# binaries
#######################################
PREFIX = arm-none-eabi-
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
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
CXX = $(GCC_PATH)/$(PREFIX)g++

else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
CXX = $(PREFIX)g++

endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S

#######################################
# CFLAGS
#######################################
# cpu
CPU = -mcpu=cortex-m4

# fpu
FPU = -mfpu=fpv4-sp-d16

# float-abi
FLOAT-ABI = -mfloat-abi=hard

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

# macros for gcc
# AS defines
AS_DEFS =

# C defines
C_DEFS =  \
-DUSE_HAL_DRIVER \
-DSTM32F429xx


# AS includes
AS_INCLUDES =

# C includes
C_INCLUDES =  \
-IInc \
-IDrivers/STM32F4xx_HAL_Driver/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \
-IDrivers/CMSIS/Include \
-IDrivers/CMSIS/Include



# compile gcc flags
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
endif


# Generate dependency information
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"

CXXFLAGS = $(CFLAGS)


#######################################
# LDFLAGS
#######################################
# link script
LDSCRIPT = STM32F429VITx_FLASH.ld

# libraries
LIBS = -lc -lm -lnosys
LIBDIR =
LDFLAGS = $(MCU) -specs=nano.specs -u _printf_float -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
LDFLAGS += -Wl,--no-wchar-size-warning
# LDFLAGS += -Wl,--no-wchar-size-warning

# default action: build all
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin


#######################################
# build the application
#######################################
# list of objects
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)))

OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(CPP_SOURCES:.cpp=.o)))
vpath %.cpp $(sort $(dir $(CPP_SOURCES)))

# list of *.a objects
OBJECTS += $(A_SOURCES)
vpath %.a $(sort $(dir $(A_SOURCES)))

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

$(BUILD_DIR)/%.o: %.cpp Makefile | $(BUILD_DIR)
    $(CXX) -c $(CXXFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.cpp=.lst)) $< -o $@

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

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

$(BUILD_DIR)/%.o: %.a Makefile | $(BUILD_DIR)
    $(AA) -c $(CFLAGS) $< -o $@

# $(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
#    $(AA) $(CC) $(OBJECTS) $(LDFLAGS) $(A_SOURCES) -o $@
#    $(SZ) $@

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

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

$(BUILD_DIR):
    mkdir $@

#######################################
# clean up
#######################################
clean:
    -rm -fR $(BUILD_DIR)

#######################################
# dependencies
#######################################
-include $(wildcard $(BUILD_DIR)/*.d)
###################################################
#               Install & Program
###################################################
install:build/$(TARGET).bin
    @echo "$(CURDIR)/bin/$(TARGET).bin"
#   /usr/local/bin/st-flash erase
    /usr/local/bin/st-flash --reset write "$(CURDIR)/build/$(TARGET).bin" 0x8000000

#
# ###################################################
# #                       etags
# ###################################################
# etags:
#   find $(ST_STD_LIB_PATH) -type f -iname "*.[ch]" | xargs etags --append
#   find $(CMSIS_LIB_PATH) -type f -iname "*.[ch]" | xargs etags --append
#   find $(FOC_LIB) -type f -iname "*.[ch]" | xargs etags --append
#   find . -type f -iname "*.[ch]" | xargs etags --append

# *** EOF ***

# deneme:
#
#   echo $(OBJECTS)
#   echo $(BUILD_DIR)
    #  echo $(A_SOURCES)
##########################################################################################################################
#工具自动生成的文件:[projectgenerator]版本:[3.5.2]日期:[Fri Jul 24 10:23:57 TRT 2020]
##########################################################################################################################
# ------------------------------------------------
#通用生成文件(基于gcc)
#
#更改日志:
#2017-02-10-多项增强+项目更新模式
#2015-07-22-第一版
# ------------------------------------------------
######################################
#目标
######################################
目标=stm32f4\u FlashflagTest
######################################
#建筑变量
######################################
#调试构建?
调试=1
#优化
OPT=-Og
#######################################
#路径
#######################################
#构建路径
BUILD\u DIR=BUILD
######################################
#来源
######################################
#C来源
C_来源=\
Src/stm32f4xx_it.c\
Src/stm32f4xx\u hal\u msp.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_can.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_rcc.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_rcc_ex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_flash.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_flash_ex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_flash_ramfunc.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_gpio.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_dma_ex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_dma.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_pwr.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_pwr_ex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_cortex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_exti.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_tim.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_tim_ex.c\
Drivers/STM32F4xx_HAL_Driver/Src/STM32F4xx_HAL_uart.c\
Src/system_stm32f4xx.c\
#ASM源
ASM_源=\
启动\u stm32f429xx.s
#CPP_来源
CPP_来源=\
Src/main.cpp\
#A_来源
#A_SOURCES=$(通配符middleware/STM32_Safety\u STL/Src/*.A)
#######################################
#二进制文件
#######################################
前缀=arm none eabi-
#gcc编译器bin路径可以在make命令中通过gcc_path变量(>make gcc_path=xxx)定义
#可以将其添加到PATH环境变量中。
ifdef GCC_路径
CC=$(GCC\u路径)/$(前缀)GCC
AS=$(GCC_路径)/$(前缀)带有cpp的GCC-x汇编程序
CP=$(GCC_路径)/$(前缀)对象复制
SZ=$(GCC_路径)/$(前缀)大小
CXX=$(GCC_路径)/$(前缀)g++
其他的
CC=$(前缀)gcc
AS=$(前缀)带cpp的gcc-x汇编程序
CP=$(前缀)对象复制
SZ=$(前缀)大小
CXX=$(前缀)g++
恩迪夫
十六进制=$(CP)-O ihex
BIN=$(CP)-O二进制-S
#######################################
#CFLAGS
#######################################
#中央处理器
CPU=-mcpu=cortex-m4
#fpu
FPU=-mfpu=fpv4-sp-d16
#浮动abi
FLOAT-ABI=-mfloat ABI=hard
#微控制器
MCU=$(CPU)-mthumb$(FPU)$(浮点ABI)
#gcc宏
#如定义
如你所愿=
#C定义
C_DEFS=\
-司机\
-DSTM32F429xx
#包括
包括=
#C包括
C_包括=\
-IInc\
-IDrivers/STM32F4xx_HAL_Driver/Inc\
-iDriver/STM32F4xx_HAL_Driver/Inc/Legacy\
-i驱动程序/CMSIS/Device/ST/STM32F4xx/Include\
-IDrivers/CMSIS/Include\
-IDrivers/CMSIS/Include
#编译gcc标志
ASFLAGS=$(MCU)$(AS_DEFS)$(AS_INCLUDES)$(OPT)-Wall-fdata节-fffunction节
CFLAGS=$(MCU)$(C_DEFS)$(C_包括)$(OPT)-墙-fdata部分-功能部分
ifeq($(调试),1)
CFLAGS+=-g-gdwarf-2
恩迪夫
#生成依赖项信息
CFLAGS+=-MMD-MP-MF“$(@:%.o=%.d)”
CXXFLAGS=$(CFLAGS)
#######################################
#LDFLAGS
#######################################
#链接脚本
LDSCRIPT=STM32F429VITx_FLASH.ld
#图书馆
LIBS=-lc-lm-lnosys
利伯迪尔=
LDFLAGS=$(MCU)-specs=nano.specs-u\u printf\u float-T$(LDSCRIPT)$(LIBDIR)$(LIBS)-Wl,-Map=$(BUILD\u DIR)/$(TARGET).Map,--cref-Wl,--gc节
LDFLAGS+=-Wl,--无wchar大小警告
#LDFLAGS+=-Wl,--无wchar大小警告
#默认操作:全部生成
全部:$(构建目录)/$(目标).elf$(构建目录)/$(目标).hex$(构建目录)/$(目标).bin
#######################################
#构建应用程序
#######################################
#对象列表
OBJECTS=$(addprefix$(BUILD\u DIR)/,$(notdir$(C\u SOURCES:.C=.o)))
vpath%.c$(排序$(目录$(c_源)))
#ASM程序对象列表
OBJECTS+=$(addprefix$(BUILD\u DIR)/,$(notdir$(ASM\u SOURCES:.s=.o)))
vpath%.s$(排序$(目录$(ASM\U源)))
对象+=$(addprefix$(BUILD\u DIR)/,$(notdir$(CPP\u源:.CPP=.o)))
vpath%.cpp$(排序$(目录$(cpp_源)))
#*.a对象列表
对象+=$(A_源)
vpath%.a$(排序$(目录$(a_源)))
$(生成目录)/%.o:%.c生成文件|$(生成目录)
$(CC)-c$(CFLAGS)-Wa,-a,-ad,-alms=$(BUILD\u DIR)/$(notdir$)(我发现了这个问题
但我不知道为什么它能正常工作。有人能解释一下吗

我使用-specs=nosys.specs而不是-specs=nano.specs 我改变这一行:

LDFLAGS = $(MCU) -specs=nano.specs -u _printf_float -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
LDFLAGS += -Wl,--no-wchar-size-warning
与:

LDFLAGS = $(MCU) -specs=nosys.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
LDFLAGS += -Wl,--no-wchar-size-warning