[ft_print] Makefile 과 컴파일

Cadet_42·2021년 7월 28일
0

ft_printf

목록 보기
3/6
post-thumbnail

ft_printf 과제의 경우 Makefile을 이용해 정적 라이브러리 파일을 만들고, 라이브러리 파일과 함께 main.c 파일을 컴파일해야 한다.

Makefile

  • ft_printf에서는 libft함수를 포함하여 사용 할 수 있어, 기존의Makefile생성방법과는 약간 다르다.
  • Makefile안에, libft의 make 파일과 그 경로를 불러오는 코드를 적어야 한다.

${NAME}: ${OBJS} $(call libft_call, all) : 이런 식으로, call을 사용하여 libft 폴더안에 있는 함수를 불러와야 한다.

SRCS	= ft_printf.c

SRCS_B	=

OBJS	= ${SRCS:.c=.o}

OBJS_B	= ${SRCS_B:.c=.o}

NAME	= libftprintf.a

RM 		= rm -f

AR		= ar rc

define libft_call
		cd libft && $(MAKE) $(1) && cd ..
endef

.c.o:
		gcc -Wall -Wextra -Werror -c $< -o ${<:.c=.o}

all:	${NAME}

${NAME}:	${OBJS}
		$(call libft_call, all)
		${AR} ${NAME} ${OBJS}

bonus: 		${OBJS_B}
		$(call libft_call, all)
		${AR} ${NAME} ${OBJS_B}

clean:
		$(call libft_call, clean)
		${RM} ${OBJS} ${OBJS_B}

fclean:		clean
		$(call libft_call, fclean)
		${RM}	${NAME}

re: 		fclean all

.PHONY: 	all bonus clean fclean re

Compile

컴파일 옵션 : 외부 정적 라이브러리를 이용한 컴파일

libft 함수를 포함하여 함께 컴파일을 할때는 하기와 같이 컴파일한다.

gcc -Wall -Wextra -Werror -L. -lftprintf -Llibft -lft ft_printf.c

사용하는 gcc 플래그 목록과 상세 설명

  • L (대문자) : 외부 라이브러리를 사용한다는 의미. 라이브러리의 위치를 정해주는 옵션.
  • L 뒤에 붙은 . : 사용할 외부 라이브러리의 경로 (붙여서 씀)
  • l (소문자) : 링크할 라이브러리 파일을 지정한다. 예를 들어 lftprintf로 사용할 외부 라이브러리의 파일명을 지정 할 수 있는데, 이렇게 하면 **lib**ftpritnf.**a**파일을 사용한다.

출처 :http://seyong.me/study/learn-with-printf/

profile
안녕하세요! 개발공부를 하고 있습니다. 감사히 배우겠습니다. ;)

0개의 댓글