1

所以这是我的 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/$@ 

我的项目目录如下:

srcdir
+---include
+---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:/program files (x86)/gnu arm embedded toolchain/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

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

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

4

0 回答 0