我可以使用任何方法来减少我的图书馆编辑的时间吗?
我的旧Makefile运行1.86秒,总计达到5.147。 我改变后
%.o: %.c
$(CC) $(FLAGS) -c -o $@ $<
分为: @ $(CC)$(FLAGS)-c $(OBJ:。o = .c)
并添加@
以使所有输出静音,我的新Makefile需要1.40秒才能运行,最多可达3.481秒。
我想知道是否有任何方法可以优化我的makefile以简化其运行速度或使其更加“有用”#34 ;?我在哪里可以学习微调,以获得稍快的编译程序?
https://github.com/Hourai42/libft/blob/master/Makefile
NAME = libft.a
FLAGS = -Wall -Wextra -Werror
CC = gcc
OBJ = ft_strrchr.o ft_putstr.o ft_strcmp.o ft_strlcat.o ft_memcpy.o \
ft_strequm.o ft_memmove.o ft_strsplit.o ft_strncpy.o ft_lstmap.o \
ft_lstadd.o ft_striter.o ft_strstr.o ft_isdigit.o ft_putnbr.o \
ft_memccpy.o ft_strdel.o ft_nmbwrd.o ft_memchr.o ft_bzero.o \
ft_isalnum.o ft_putstr_fd.o ft_lstiter.o ft_lstdelone.o ft_toupper.o
\
ft_strcpy.o ft_lstnew.o ft_strdup.o ft_putnbr_fd.o ft_striteri.o \
ft_strmap.o ft_putendl_fd.o ft_memdel.o ft_strnstr.o ft_putchar.o \
ft_isascii.o ft_strlen.o ft_strsub.o ft_strnew.o ft_memalloc.o
ft_putendl.o \
ft_strncat.o ft_itoa.o ft_strncmp.o ft_memcmp.o ft_strtrim.o
ft_strequ.o
\
ft_putchar_fd.o ft_memset.o ft_isalpha.o ft_strcat.o ft_tolower.o \
ft_strnequ.o ft_strjoin.o ft_atoi.o ft_strclr.o ft_strmapi.o \
ft_isprint.o ft_lstdel.o ft_strchr.o ft_mallocwrd.o ft_countplace.o \
ft_isprime.o ft_hassqrt.o ft_fibonacci.o ft_recursive_power.o \
ft_recursive_factorial.o
all: $(NAME)
$(NAME):
@$(CC) $(FLAGS) -c $(OBJ:.o=.c)
@ar rc $(NAME) $(OBJ)
@ranlib $(NAME)
clean:
@/bin/rm -f $(OBJ)
fclean: clean
@/bin/rm -f $(NAME)
re: fclean all
.PHONY: clean fclean re
答案 0 :(得分:0)
示例:
NAME = libft.a
FLAGS = -Wall -Wextra -Werror
CC = gcc
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(SRCS))
.PHONY: all clean ultraclean
all: $(NAME)
%.o: %.c
@$(CC) $(FLAGS) -c -o $@ $<
$(NAME): $(OBJS)
@ar rc $(NAME) $^ && \
ranlib $(NAME)
clean:
@/bin/rm -f $(OBJS)
ultraclean:
@/bin/rm -f $(OBJS) $(NAME)
然后,如果你有,让我们说,6核和超线程:
$ make -j12
注意:当然,使用并行制作时,请不要像使用{{1}那样并行化清理目标(clean
,ultraclean
)和构建目标(all
)。 } target。