Assembly 为什么我没有使用添加rm命令';没有具体说明?
我刚刚创建了一个通用makefile来编译和链接汇编程序文件: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
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它是一个完全相同的副本。你为什么这么想?对不起,我的错,我不止试过一次。