上期遗留了一个问题,就是在执行make后链接步骤会提示找不见.o文件,再次make才能编译成功。经过最近的修改,这个问题终于解决了。思路如下:
一、思考太死板,只会在中间使用自动化变量,不知道变通。
此次就是不使用自动化变量,使用自定义变量反而达到了效果。
$(LD) $(LDFLAGS) $(sort $(addprefix ./Build/,$(C_INCLUDE:%.c=%.o))) -T $(LD_SOURCE) -o $(TARGET).elf
这是使用后的代码段。
执行make后效果
Makefile:26: delay.o main.o stm32f4xx_gpio.o stm32f4xx_rcc.o stm32f4xx_spi.o system_stm32f4xx.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./Dev/delay.c -o ./Build/delay.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./User/main.c -o ./Build/main.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./Dev/stm32f4xx_gpio.c -o ./Build/stm32f4xx_gpio.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./Dev/stm32f4xx_rcc.c -o ./Build/stm32f4xx_rcc.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./Dev/stm32f4xx_spi.c -o ./Build/stm32f4xx_spi.o
arm-none-eabi-gcc -mthumb -mcpu=cortex-m4 -g -I /home/fxx/Desktop/Progect/Dev/ -DSTM32F40_41xxx -c ./Dev/system_stm32f4xx.c -o ./Build/system_stm32f4xx.o
arm-none-eabi-as -mthumb -mcpu=cortex-m4 -c startup_stm32f40xx.s -o ./Build/startup_stm32f40xx.o
arm-none-eabi-ld --static -L /usr/arm-none-eabi/lib/ -L /usr/lib/gcc/arm-none-eabi/11.2.0/ ./Build/delay.o ./Build/main.o ./Build/stm32f4xx_gpio.o ./Build/stm32f4xx_rcc.o ./Build/stm32f4xx_spi.o ./Build/system_stm32f4xx.o -T ./STM32F407IGHx_FLASH.ld -o main.elf
arm-none-eabi-ld: warning: cannot find entry symbol Reset_Handler; defaulting to 0000000008000000
顺利编译
|