0
我正在尝试编写一个Makefile,它将其目标和对象分别复制到bin /和obj /目录中。Makefile不会将.o复制到obj /并将目标复制到bin /文件夹
然而,当我尝试运行它,我得到以下错误:
nasm -f elf64 -g -F stabs main.asm -l spacelander.lst
ld -o spacelander obj/main.o
ld: cannot find obj/main.o: No such file or directory
make: *** [spacelander] Error 1
Why is this happening?
更新
当我张贴的错误,这是由于白色间隔的错误我注意到了。在照顾好这些人后,我仍然得到了新的错误,我用我之前提到的旧错误取而代之。
这是什么?
更新2
发布-d
标志输出下面生成文件源。
来源
ASM := nasm
ARGS := -f
FMT := elf64
OPT := -g -F stabs
SRC := main.asm
OBJDIR := obj
TARGETDIR := bin
OBJ := $(addprefix $(OBJDIR)/,$(patsubst %.asm, %.o, $(wildcard *.asm)))
TARGET := spacelander
.PHONY: all clean
all: $(OBJDIR) $(TARGET)
$(OBJDIR):
mkdir $(OBJDIR)
$(OBJDIR)/%.o: $(SRC)
$(ASM) $(ARGS) $(FMT) $(OPT) $(SRC) -l $(TARGET).lst
$(TARGET): $(OBJ)
ld -o $(TARGET) $(OBJ)
clean:
@rm -f $(TARGET) $(wildcard *.o)
@rm -rf $(OBJDIR)
make -d
输出 - 注:输出身体太多的字符,因而pastebinned
哪条线是29和32?用-d给出什么值得注意? – Scooter
您可能需要指定'nasm'的输出文件,也许使用'-o $ @'作为附加选项(但您必须仔细阅读手册)。这与编译器如'gcc'使用的'-o output.o'类似。 –
在'$(TARGET):$(OBJ)'指令中,你的意思是? – zeboidlund