Assembly Can';我不知道如何让makefile只使用.asm文件和.o文件
我试着用两个实验室,实验室。文件的lab.o。我找不到关于在没有.c文件的情况下使用makefile的更多信息Assembly Can';我不知道如何让makefile只使用.asm文件和.o文件,assembly,makefile,Assembly,Makefile,我试着用两个实验室,实验室。文件的lab.o。我找不到关于在没有.c文件的情况下使用makefile的更多信息 非常难堪 您的makefile没有指定如何处理.asm文件,也没有说明如何使用NASM作为汇编程序 下面是一个小示例makefile,它将从汇编文件lab.asm中构建一个名为lab的可执行文件,使用NASM作为汇编程序,使用LD(来自GNU binutils)作为链接器。如有必要,请随意修改/扩展: make: *** No rule to make target `lab', ne
非常难堪 您的makefile没有指定如何处理
.asm
文件,也没有说明如何使用NASM作为汇编程序
下面是一个小示例makefile,它将从汇编文件lab.asm
中构建一个名为lab
的可执行文件,使用NASM作为汇编程序,使用LD(来自GNU binutils)作为链接器。如有必要,请随意修改/扩展:
make: *** No rule to make target `lab', needed by `all'. Stop.
TARGET=lab
FILES=lab.asm
OBJS=$(文件:.asm=.o)
NASM=NASM
ASM_标志=-f elf64
LD=LD
全部:$(目标)
实验室:$(OBJS)
$(LD)-o$(目标)$(OBJS)
%.o:%.asm
$(NASM)$(ASM_标志)-o$@$<
是否确实希望以.c
结尾命名对象文件,并且源文件是否真的以.o
结尾命名?为什么要执行组装文件的步骤?今天(以及很久以前)的编译器已经能够直接生成对象文件。C源文件有一个生成目标文件的规则,不需要汇编文件规则。Wild gues.PHONY:clean
在clean:
之前是lab.asm
?您的makefile没有指定如何处理.asm
文件。另外,您还没有提到您的代码是为哪个汇编程序编写的。$(OBJS)
的值是lab.c
,这可能不是您想要的。$(ASMS)
的值是lab.o
,这可能也不是您想要的。lab
目标的先决条件是lab.c
。当前目录中有lab.c
文件吗?没有.c。我需要以某种方式设置makefile来构建asm文件。
make: *** No rule to make target `lab', needed by `all'. Stop.
TARGET = lab
FILES = lab.asm
OBJS = $(FILES:.asm=.o)
NASM = nasm
ASM_FLAGS = -f elf64
LD = ld
all : $(TARGET)
lab: $(OBJS)
$(LD) -o $(TARGET) $(OBJS)
%.o : %.asm
$(NASM) $(ASM_FLAGS) -o $@ $<