Я пытаюсь собрать небольшую новичковую программу на ассемблере, состоящую из двух asm-файлов. Я мог бы создать один файл, но я хотел попробовать вызвать процедуру, которая находится в другом файле.
Вот мой Makefile:«nasm: ошибка: более одного входного файла указано» при компиляции двух файлов asm
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
Я надеюсь, что я достаточно ясно для моего первого дия stion на этом сайте.
Не могли бы вы помочь мне?
Я не понимаю вопроса. Метод, который вы прокомментировали как (1), - это правильный способ сделать это. Вы говорите, что все работает хорошо, когда вы его используете. Так в чем проблема с его использованием? – MadScientist
Альтернативой является один файл сборки, чтобы «% include» другой. Например, для чистой сборки у меня обычно есть файл «0index.asm», который включает в себя все, поэтому мне не нужно беспокоиться о make (и проверять, были ли файлы изменены и запускать Nasm-процесс N количество раз, и связывание , а также..). Это быстрее и легче забыть все это ... :-) – Brendan
@MadScientist: Метод (1) действительно работает, но если у меня есть больше, чем несколько файлов для компиляции, может быть немного утомительно писать и читать , Брендан: Спасибо за это, я немного поработал над твоим способом, и это интересно. Я попробую это –