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
我在为 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