Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly Can';我不知道如何让makefile只使用.asm文件和.o文件_Assembly_Makefile - Fatal编程技术网

Assembly Can';我不知道如何让makefile只使用.asm文件和.o文件

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

我试着用两个实验室,实验室。文件的lab.o。我找不到关于在没有.c文件的情况下使用makefile的更多信息


非常难堪

您的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 $@ $<