Skip to main content

Command Palette

Search for a command to run...

Makefile relink 원인과 해결 방법

Updated
•1 min read•View as Markdown
Makefile relink 원인과 해결 방법

아래 Makefile에서 make 실행 시 relink 문제가 발생했다.

(어떤 부분이 문제일지 한 번 찾아보세요.)

CC = cc
CFLAGS = -Wall -Wextra -Werror
NAME = program

INCLUDES_DIR = ./includes

SRCS_DIR = ./srcs
SRCS = main.c

OBJS_DIR = ./objs
OBJS = $(addprefix $(OBJS_DIR)/, $(notdir $(SRCS:.c=.o)))

LIBFT_DIR= ./libft
LIBFT = libft.a

LIBS = $(LIBFT_DIR)/$(LIBFT)

.PHONY: all
all: $(NAME)

.PHONY: $(NAME)
$(NAME): $(OBJS)
    make -C $(LIBFT_DIR)
    $(CC) $(CFLAGS) $(DFLAGS) -o $(NAME) $(OBJS) $(LIBS)

$(OBJS_DIR):
    mkdir -p $(OBJS_DIR)

$(OBJS_DIR)/%.o: $(SRCS_DIR)/%.c | $(OBJS_DIR)
    $(CC) $(CFLAGS) $(DFLAGS) -c $< -o $@ -I$(INCLUDES_DIR) \
    -I$(LIBFT_DIR)

# make와 관련 없는 clean, fclean, re는 제외

원인은 $(NAME) 위에 적은 .PHONY: $(NAME) 때문이었다.

make를 실행하고 program이 만들어졌어도 .PHONY에 $(NAME)이 등록되어있어서 무시하고 다시 컴파일된 것.

문제가 되는 부분을 지우면 relink가 되지 않는다.

More from this blog

C socket programming basic

소켓 물리적으로 연결된 네트워크 상에서 서로 다른 컴퓨터 또는 프로세스 간에 데이터를 주고받기 위한 엔드포인트(통신 접점) 소켓 프로그래밍 소켓을 사용하여 네트워크 통신 기능을 구현하는 것 소켓 종류 스트림 소켓(Stream Sockets) TCP(Transmission Control Protocol)를 사용하여 연결 지향적인 통신을 제공.데이터가 순서대로, 신뢰성 있게, 그리고 에러 없이 전송되어야 할 때 사용. 데이터그램 소켓(Datagra...

Feb 9, 20243 min read
C socket programming basic

nailhae's blog

8 posts