我正在尝试用汇编语言组装一个小的初学者程序,该程序由两个asm文件组成。我可以创建一个文件,但我想尝试调用另一个文件中的过程 这是我的Makefile:
NAME = formatter
SRCS = formatter.asm clearstring.asm
OBJS = $(SRCS:.asm=.o)`
NASM = nasm
NASMFLAGS = -f elf64 -F dwarf
LD = ld
RM = rm -f
all: $(NAME)
$(NAME): $(OBJS)
$(LD) $(OBJS) -o $(NAME)
#(1):
# formatter.o: formatter.asm
# $(NASM) -o formatter.o formatter.asm $(NASMFLAGS)
# clearstring.o: clearstring.asm
# $(NASM) -o clearstring.o clearstring.asm $(NASMFLAGS)
#(2):
$(OBJS): $(SRCS)
$(NASM) -o $(OBJS) $(SRCS) $(NASMFLAGS)
当使用注释(1)下的代码时,一切都运行良好但是当我使用紧凑代码(2)时,make
给了我:
nasm -o formatter.o clearstring.o formatter.asm clearstring.asm -f elf64 -F dwarf
nasm: error: more than one input file specified
nasm: error: more than one input file specified
type `nasm -h' for help
make: *** [formatter.o] Error 1
我知道汇编步骤不对,但我无法做到:
nasm -o formatter.o formatter.asm -f elf64 -F dwarf
nasm -o clearstring.o clearstring.asm -f elf64 -F dwarf
我希望我对本网站的第一个问题已经足够清楚了 你能帮我么 ?
答案 0 :(得分:1)
像这样的规则应该做的伎俩:
%.o: %.asm
$(NASM) $(NASMFLAGS) -o $@ $<
$@
和$<
将分别扩展为目标名称和(首先,仅在我们的情况下)输入文件。