NASM:库的Makefile

时间:2015-06-11 08:30:42

标签: assembly makefile nasm

我在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中的第一个文件 谢谢:))

1 个答案:

答案 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