如何获取不重新链接的多可执行文件

时间:2019-06-07 03:43:24

标签: c makefile

我只是将我的makefile更改为可以使用共享对象文件编译两个可执行文件,但是我可以找到为什么它重新链接了?

NAME2 = checker

SRC_PATH1       :=  src/push_swap
SRC_PATH2       :=  src/checker
OBJ_PATH        :=  obj
INC_PATH        :=  include
LIB_PATH        :=  libft

SRC_NAME1       :=  sort_pile.c \
                    sort_work.c \

SRC_NAME2       :=  parse.c \
                    free.c \
                    pile_list.c \
                    debug.c \
                    swap.c \
                    push.c \
                    rotate.c \
                    reverse_rotate.c \
                    move_gestion.c \


INC_NAME        :=  push_swap.h
LIB             :=  $(LIB_PATH)/libft.a
LIB_LINK        :=  -L $(LIB_PATH) -lft
OBJ1            :=  $(addprefix $(OBJ_PATH)/,$(SRC_NAME1:.c=.o))
OBJ2            :=  $(addprefix $(OBJ_PATH)/,$(SRC_NAME2:.c=.o))
INCS            :=  -I $(LIB_PATH)/$(INC_DIR) -I $(INC_DIR)
CC              :=  gcc
CFLAGS          :=  -Wall -Wextra -Werror

all:  $(LIB) $(NAME1) $(NAME2)

$(LIB):
    make -C $(LIB_PATH)

$(NAME1): $(OBJ1) $(OBJ2) obj/push_swap.o
    $(CC) $(CFLAGS) obj/push_swap.o $(OBJ1) $(OBJ2) $(LIB) -o $@

$(NAME2): $(OBJ2) obj/checker.o
    $(CC) $(CFLAGS) obj/checker.o $(OBJ2) $(LIB) -o $@

$(OBJ_PATH)/%.o: $(SRC_PATH1)/%.c $(INC_PATH)/* obj
    $(CC) $(CFLAGS) -o $@ -c $< -I $(INC_PATH)/

$(OBJ_PATH)/%.o: $(SRC_PATH2)/%.c $(INC_PATH)/* obj
    $(CC) $(CFLAGS) -o $@ -c $< -I $(INC_PATH)/

obj:
    mkdir -p obj

clean:
    rm -rf $(OBJ) $(LIB_PATH)/*.o
    rm -rf obj

fclean: clean
    rm -f $(NAME2)
    make -C $(LIB_PATH) fclean

re: fclean all

.PHONY: all fclean clean re norme

我已经尝试为itch主文件制定规则,但是共享对象文件出错。 我想知道我是否会被迫分离痒对象文件。

0 个答案:

没有答案