NASM: 库的 Makefile

NASM: Makefile for library

我在为 nasm 中的库构建 makefile 时遇到问题,因为它要求您一次 运行 nasm 使用一个输入文件。 我试过 %.o : %.s 东西,但我可能做错了,因为它不起作用。 这是我拥有的:

NAME = libfts.a
SRC_ASM =   file1.s \
        file2.s \
        file3.s \

OBJ_ASM = $(SRC_ASM:.s=.o)
FLAGS = -Wall -Werror -Wextra
CC_ASM = nasm
ASM_FLAGS = -f macho64

all :       $(NAME)

$(NAME) :   $(OBJ_ASM)
    @ar rc $(NAME) $(OBJ_ASM)
    @ranlib $(NAME)

#$(OBJ_ASM) :   $(SRC_ASM)
#   nasm -f macho64 -o $(OBJ_ASM) $(SRC_ASM)

%.o : %.s
    nasm $(ASM_FLAGS) -o $@ $<

clean:
    rm -f *.o main.o

fclean : clean
    rm -f libfts.a

re : fclean all

.PHONY: clean fclean re

我尝试评论和取消评论评论的部分,四处移动,但似乎对我没有任何作用:(

现在我得到 ar: no archive members specified 我已经包含的其他错误 as 运行ning 而不是 nasm 并且只是 [=15= 中的第一个文件] 谢谢:)

以下似乎对我来说工作正常:

NAME = libfts.a
SRC_ASM =   file1.s \
        file2.s \
        file3.s \

OBJ_ASM = $(SRC_ASM:.s=.o)
FLAGS = -Wall -Werror -Wextra
NASM = nasm
AR = ar
RANLIB = ranlib
ASM_FLAGS = -f macho64

all :       $(NAME)

$(NAME): $(OBJ_ASM)
    $(AR) rc $(NAME) $(OBJ_ASM)
    $(RANLIB) $(NAME)

%.o : %.s
    $(NASM) $(ASM_FLAGS) -o $@ $<

fclean : clean
    rm -f libfts.a

re : fclean all

.PHONY: clean fclean re

我得到的终端输出是:

$ make -f makefile
nasm -f macho64 -o file1.o file1.s
nasm -f macho64 -o file2.o file2.s
nasm -f macho64 -o file3.o file3.s
ar rc libfts.a file1.o file2.o file3.o
ranlib libfts.a