arm-none-gcc-ld 错误:无法找到目标文件,即使它以正确的路径存在

问题描述

所以这是我的 makefile 中的一个片段,用于构建我的目标:

#include header files directory
vpath %.h = include
vpath %.o = obj

#create a list of *.c from the source directory
SRC = $(wildcard src/*.c)
OBJ = $(SRC:src/%.c=%.o)

main.elf: $(OBJ)
    $(CC) $(LDFLAGX) $(addprefix obj/,$(OBJ)) -o $@ 

%.o :   %.c
    $(CC) $(CPPFLAGS)   $(CFLAGS) -c $^ -o obj/$@ 

我的项目目录如下:

源目录
+---包括
+---对象
\---src

这是我得到的输出

arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/RCC.c -o obj/RCC.o
arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/SPI.c -o obj/SPI.o
arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/main.c -o obj/main.o
arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/startup.c -o obj/startup.o
arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/timer.c -o obj/timer.o
arm-none-eabi-gcc -Iinclude -mcpu=cortex-m3 -mthumb -std=gnu11 -O0 -g -Wall -c src/usart.c -o obj/usart.o

arm-none-eabi-gcc -Xlinker -T -Xlinker lscript.ld -Xlinker -nostdlib -Xlinker -Map=main.map obj/RCC.o obj/SPI.o obj/main.o obj/startup.o obj/ timer.o obj/usart.o -o main.elf

c:/程序文件(x86)/gnu arm 嵌入式工具链/9 2020-q2-update/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../. ./arm-none-eabi/bin/ld.exe:找不到startup.o collect2.exe:错误:ld 返回 1 个退出状态 make.exe": *** [main.elf] 错误 1

所以 obj/ 文件夹中存在 startup.o 并且配方中也指定了路径,所以这里出了什么问题?

由于大量此类错误,我一直在努力创建自己的 makefile,即使在尝试了许多可能解决问题的教程和示例之后,时不时会弹出另一个新的,有没有更方便的方法构建这样的项目不会给我带来这么多麻烦?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)