Makefile Makfile错误:make:../objects/%.o::没有这样的文件或目录

Makefile Makfile错误:make:../objects/%.o::没有这样的文件或目录,makefile,raspberry-pi,operating-system,raspberry-pi4,makefile-errors,Makefile,Raspberry Pi,Operating System,Raspberry Pi4,Makefile Errors,我一直在尝试为Raspberry Pi 4正确编译我的操作系统(不是linux操作系统,我自己的操作系统)大约一周了,现在我一直在问问题,但每当有问题得到回答时,我就会有另一个错误 无论如何,当我尝试使用make命令时,我会出现以下错误: ../objects/%.o: ../src/kernel/%.s gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin/aarch64-none-elf-gcc -Wall -O2 -ffreestanding -

我一直在尝试为Raspberry Pi 4正确编译我的操作系统(不是linux操作系统,我自己的操作系统)大约一周了,现在我一直在问问题,但每当有问题得到回答时,我就会有另一个错误

无论如何,当我尝试使用make命令时,我会出现以下错误:

../objects/%.o: ../src/kernel/%.s gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin/aarch64-none-elf-gcc -Wall -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles -c ../src/kernel -o objects
make: ../objects/%.o:: No such file or directory
make: *** [Makefile:111: clean] Error 127
这是makefile,我保存了很多未使用的代码,以防万一:

CFLAGS=-Wall-O2-ff重建-nostinc-nostdlib-mcpu=cortex-a72+nosimd
CXXFLAGS=-ggdb3-O0-Wall-O2-FFreserving-nostdinc-nostdlib-mcpu=cortex-a72+NosMD
CSRCFLAGS=-O2-墙壁-Wextra
LFLAGS=-ffreserving-O2-nostlib
IMG_路径=/
BUILD\u BACK\u TWO=../../../BUILD
CFILES=$(通配符*.c)
OFILES=$(c文件:.c=.o)
GCCPATH=gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf
GCCFLAGS=-Wall-O2-ffreserving-nostinc-nostlib-nostartfiles
GCCPATHARCH=$(GCCPATH)/AARC64无elf/bin
GCCPATHBIN=$(GCCPATH)/bin
ASMCFLAGS=-f elf32-f dwarf-g-w+all
ASM=-s
#文件的位置
THIS_DIR:=$(DIR$(abspath$(firstword$(MAKEFILE_LIST)))
keren_SRC=../SRC/kernel
keru MENU\u SRC=../SRC/kernel/MENU
KER_头=../包括
公共_SRC=../SRC/COMMON
UI_IMAGES=../IMAGES/UI
SPE_游戏=../SPE_游戏
DINOBYTE=$(SPE_游戏)/DINOBYTE
OBJ_DIR=对象
ASMSOURCES=$(通配符$(keru SRC)/*.s)
KERSOURCES=$(通配符$(keru SRC)/*.c)
#KERSOURCES=$(通配符$(keru SRC)/$(ARCHDIR)/*.c)
COMMONSOURCES=$(通配符$(COMMON_SRC)/*.c)
KERSOURCESCPP=$(通配符$(keru SRC)/*.cpp)
DINOBYTESOURCES=$(通配符$(DINOBYTE)/src/*.cpp)
#KERSOURCESCPP=$(通配符$(keru SRC)/$(ARCHDIR)/*.cpp)
#KERMENUSOURCESC=$(通配符$(keru MENU SRC)/*.c)
#KERMENUSOURCESCPP=$(通配符$(kermenu-SRC)/*.cpp)
UISOURCES=$(通配符$(UI_图像)/*.png)
OBJECTS=$(patsubst$(keru SRC)/%.s,$(OBJ_DIR)/%.o,$(ASMSOURCES))
#OBJECTS+=$(patsubst$(KER_SRC)/%.s,$(OBJ_DIR)/%.o,$(ASMSOURCES))
OBJECTS+=$(patsubst$(keru SRC)/%.c,$(OBJ_DIR)/%.o,$(KERSOURCES))
OBJECTS+=$(patsubst$(keru SRC)/%.cpp,$(OBJ_DIR)/%.o,$(KERSOURCESCPP))
OBJECTS+=$(patsubst$(COMMON_SRC)/%.c、$(OBJ_DIR)/%.o、$(COMMONSOURCES))
#对象+=$(patsubst$(KER_MENU_SRC)/%.c、$(OBJ_DIR)/%.o、$(KERMENUSOURCESC))
#对象+=$(patsubst$(KER_MENU_SRC)/%.cpp,$(OBJ_DIR)/%.o,$(KERMENUSOURCESCPP))
#OBJECTS+=$(patsubst$(UI\u图像)/%.png,$(OBJ\u DIR)/%.o,$(UISOURCES))
#Dinobyte对象[此处包括Dinobyte标题](稍后执行)
#OBJECTS+=$(patsubst$(双字节源)/src/%.cpp,$(OBJ_DIR)/%.o,$(双字节源))
#标题
标题=$(通配符$(KER_HEAD)/*.h)
IMG_NAME=SuperPiOS
#生成:$(对象)$(标题)
#$(CC)-T linker.ld-o$(IMG_NAME).elf$(LFLAGS)$(OBJECTS)#需要缩进
#$(对象复制)$(IMG#u名称).elf-O二进制$(IMG#u名称).IMG#需要缩进
#$(OBJ_DIR)/%.o:$(KER_SRC)/%.s
#mkdir-p$(@D)#需要缩进
#$(CC)$(CFLAGS)-I$(keru SRC)-c$<-o$@需要缩进
BUILDKERS=$(对象目录)/%.o:$(对象目录)/%.s\
$(GCCPATHBIN)/AARC64无elf gcc$(GCCFLAGS)-c$(KER_SRC)-o$(OBJ_DIR)
BUILDKERC=$(对象目录)/%.o:$(对象目录)/%.c\
$(GCCPATHBIN)/AARC64无elf gcc$(GCCFLAGS)-c$<-o$@
BUILDKERCARCH=$(对象目录)/%.o:$(对象目录)/$(对象目录)/%.c\
$(GCCPATHBIN)/AARC64无elf gcc$(GCCFLAGS)-c$<-o$@
BUILDSRCCPP=$(对象目录)/%.o:$(对象目录)/%.cpp\
$(GCCPATHBIN)arm none eabi cpp$(GCCFLAGS)-c$<-o$@
BUILDSRCCPPARCH=$(对象目录)/%.o:$(对象目录)/$(对象目录)/%.cpp\
$(GCCPATHBIN)/AARC64无elf gcc$(GCCFLAGS)-c$<-o$@
BUILDCOMMONC=$(对象目录)/%.o:$(公共目录)/%.c\
$(GCCPATHBIN)/AARC64无elf gcc$(GCCFLAGS)-c$<-o$@
#$(对象目录)/%.o:$(对象菜单)/%.c
#mkdir-p$(@D)
#$(CC)$(CFLAGS)-I$(keru SRC)-I$(keru HEAD)-c$<-o$@$(CSRCFLAGS)
#$(对象目录)/%.o:$(对象菜单)/%.cpp
#mkdir-p$(@D)
#$(CC)$(CXXFLAGS)-I$(KER_SRC)-I$(KER_HEAD)-c$<-o$@$(CSRCFLAGS)
BUILD=$(IMG_NAME)%.IMG:$(对象)$(标题)
BUILD+=$(GCCPATHBIN)/aarch64 none-elf-ld-nostdlib-nostartfiles$(OBJECTS)-T linker.ld-o$(IMG_NAME).elf
BUILD+=$(GCCPATHBIN)/aarch64 none-elf-objcopy-O二进制$(IMG\u-NAME).elf$(IMG\u-NAME).IMG
清洁:
$(建筑商)
$(BUILDKERC)
$(BUILDKERCARCH)
$(BUILDSRCCPP)
$(BUILDSRCCPPARCH)
$(c)
$(构建)
rm-rf$(OBJ_DIR)
rm$(IMG_NAME).elf
rm$(IMG\U名称)。IMG
运行:构建
qemu系统arm-m 128-无需重新启动-m raspi4-串行stdio-kernel kernel.elf
#dbg:
#$(GDB)kernel.elf
#dbgrun:构建gdbinit
#qemu系统arm-m 128-无需重新启动-m raspi4-串行标准配置-kernel kernel.elf-S-S
#.冒牌货:gdbinit
#格德比尼特:
#echo“目标远程本地主机:1234”>.gdbinit
#echo“break kernel_main”>>.gdbinit

无论如何,先谢谢你

我是说。。。这甚至与有效的makefile不符。您不能将整个模式规则放入变量中,然后将这些变量放入配方中。你当然不想把所有的构建命令都放在一个干净的规则中,这个规则可能会通过删除所有生成的文件(比如对象文件)来清理你的工作空间。我想你需要阅读GNU make手册的前一两章来获得一些关于make的基本信息:试着编写一个非常简单的make文件,只编译一个文件。@Madscietist好吧,我一直在努力让它工作,但不管我做什么,我似乎都无法让它工作。这就是为什么我建议(a)阅读手册中的介绍部分,(b)从一个非常简单的makefile开始,它只构建了一个东西。如果你能做到这一点,那么你将很好地理解makefile语法,并可以添加到其中。另外,您仍然存在我在前面的问题中告诉您的问题:您的
clean
规则仍然是makefile中的第一个显式规则。前面的问题包含一个比这个更接近可用的makefile。