Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 为什么我没有使用添加rm命令';没有具体说明?_Assembly_Makefile_Nasm_Gnu Make_Ld - Fatal编程技术网

Assembly 为什么我没有使用添加rm命令';没有具体说明?

Assembly 为什么我没有使用添加rm命令';没有具体说明?,assembly,makefile,nasm,gnu-make,ld,Assembly,Makefile,Nasm,Gnu Make,Ld,我刚刚创建了一个通用makefile来编译和链接汇编程序文件: AS=nasm ASFLAGS=-g -f elf64 LDFLAGS=-m elf_x86_64 -static BINARIES=print_args64 all: $(BINARIES) %: %.o $(LD) $(LDFLAGS) -o $@ $< %.o: %.asm $(AS) $(ASFLAGS) -o $@ $< clean: $(RM) $(BI

我刚刚创建了一个通用makefile来编译和链接汇编程序文件:

AS=nasm
ASFLAGS=-g -f elf64
LDFLAGS=-m elf_x86_64 -static
BINARIES=print_args64

all: $(BINARIES)

%: %.o
        $(LD) $(LDFLAGS) -o $@ $<

%.o: %.asm
        $(AS) $(ASFLAGS) -o $@ $<

clean:
        $(RM) $(BINARIES) $(wildcard *.o)
但它实际上为以下对象添加了一个
rm
命令:

nasm -g -f elf64 -o print_args64.o print_args64.asm
ld -m elf_x86_64 -static -o print_args64 print_args64.o
 rm print_args64.o
这是从哪里来的?我如何避免它

我找不到这方面的任何文档


您好,bvolkmer

make
删除它是因为它是一个中间文件,而不是因为您可能认为的
clean
目标。看见相关引用:

第二个区别是,如果make创建b是为了更新 另外,在不再需要b之后,它会删除b。 因此,在生成之前不存在的中间文件 制造后不存在通过向您报告删除操作 打印“rm-f”命令,显示要删除的文件

可以通过标记来防止自动删除中间文件 将其作为辅助文件保存。要执行此操作,请将其列为 特别目标,次要目标。当文件是辅助文件时,make不会 创建文件仅仅是因为它不存在,但是 不会自动删除该文件。将文件标记为辅助文件 也将其标记为中间值

您可以将隐式规则的目标模式(如“%.o”)列为 特殊目标的先决条件。保存珍贵 由目标模式匹配的隐式规则生成的中间文件 那个文件的名字

还请注意,您可以使用
-d
开关询问
make
以获取有关其正在执行的操作的额外信息,该开关可打印如下内容:

Successfully remade target file `all'.
Removing intermediate files...
rm print_args64.o

您没有使用发布在此处的生成文件。@user657267它是一个完全相同的副本。你为什么这么想?对不起,我的错,我不止试过一次。