Linux - Makefile을 이용한 C 컴파일 및 링킹하기

skyju·2022년 2월 20일
1

Linux

목록 보기
5/5

ranlib 명령은 지정한 아카이브 파일명의 인덱스를 생성하여 랜덤 라이브러리로 변환한다. 이는 ar -s 명령과 동일하다.

TARGET		= 생성할 파일 명
CC			= 컴파일러 (gcc)
CFLAGS		= -Wall -Wextra -Werror
DIR			= ./srcs/
INC			= -I/includes/

//-I : 전처리 과정에서 헤더 파일을 탐색하는 기본 디렉터리를 추가할때

SRC			= src file명 나열
SRCS		= ${addprefix ${DIR}, ${SRC}}

//addprefix 전치사를 붙여줌
//또는 addsuffix를 이용하여 file명에 .c 또는 .o를 붙여줄 수도 있음
//ex) SRCS = $(addprefix $(SRCS_DIR), $(addsuffix .c, $(FILES)))

OBJS		= ${SRCS:.c=.o}
RM			= rm -f

라이브러리를 만들려면 ar 유틸리티가 필요

LIBS = ranlib <- 링크할 때 필요한 라이브러리를 추가한다.

https://progh2.tistory.com/entry/%EC%A0%95%EC%A0%81-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%99%80-ar-ranlib-nm

// 기본적으로 생성하는 규칙들

all:		${TARGET}

.c.o:
			${CC} ${CFLAGS} -c ${INCS} $< -o ${<:.c=.o}

${TARGET}:	${OBJS}
			ar rc $@ ${OBJS}
			${LIB} $@

clean:
			${RM} ${OBJS}

fclean:		clean
			${RM} ${TARGET}

re:			fclean all

http://egloos.zum.com/studyfoss/v/5049029

가짜 목적물 .PHONY 설정하기


생성한 라이브러리를 사용하고 싶을때는
컴파일 할 때!!
-L(아카이브 파일이 있는 디렉토리 주소)
-l아카이브명

이때 -lex 의 경우
libex.a를 의미한다!

profile
https://github.com/skyju

0개의 댓글