编译两个asm文件时,“nasm:错误:指定了多个输入文件”

时间:2014-01-28 02:26:51

标签: linux assembly makefile nasm

我正在尝试用汇编语言组装一个小的初学者程序,该程序由两个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

我希望我对本网站的第一个问题已经足够清楚了 你能帮我么 ?

1 个答案:

答案 0 :(得分:1)

像这样的规则应该做的伎俩:

%.o: %.asm
    $(NASM) $(NASMFLAGS) -o $@ $<

$@$<将分别扩展为目标名称和(首先,仅在我们的情况下)输入文件。