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