我在nasm中为库构建makefile时遇到问题,因为它要求你一次只运行一个输入文件。 我尝试使用%.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
代替nasm
而非SRC_ASM
中的第一个文件
谢谢:))
答案 0 :(得分:2)
以下似乎对我有用:
$ 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
我得到的终端输出是:
Derived