간단한 makefile 만들기 예제

리눅스에서 make를 사용하여 빌드할 때 makefile에 정의된 컴파일/링크 규칙을 사용한다.

본 포스트에서는 간단하게 만들 수 있는 makefile 예제를 싣고 있다.


실행파일 만들기용 makefile

.SUFFIXES : .c .o

CC=gcc

LIBS = -lm -lrt -lpthread -L./libpath
INC = -I./include
CFLAGS = -g -Wall $(INC)

SRCS = main.c
OBJS=$(SRCS:.c=.o)

TARGET = test

all : $(TARGET)

$(TARGET) : $(OBJS)
                    $(CC) -o $@ $(CFLAGS) $(OBJS) $(LIBS)

clean :
                rm -rf $(OBJS) $(TARGET) core

new : 
                $(MAKE) clean 
                $(MAKE) 


CC= 컴파일에 사용할 컴파일러를 넣어준다.

LIBS= 사용하는 lib를 넣어준다.

INC= include 위치를 넣어준다.

CFLAGS= 컴파일에 사용할 플래그를 넣어준다.

SRCS= 컴파일할 소스를 넣어준다.

TARGET= 실행파일 이름을 넣어준다.



정적 라이브러리 만들기용 makefile

.SUFFIXES : .c .o


CC = gcc
AR = ar

INC = -I./include/
CFLAGS = -O2 -Wall  $(INC)
ARFLAGS=rv

SRCS=userlib.c
OBJS=$(SRCS:.c=.o)


TARGET = libuser

all: $(SOURCES) $(TARGET)
$(TARGET) : $(OBJS)
                    $(AR) $(ARFLAGS) $(TARGET).a $(OBJS)

.c .o:
$(CC) $(CFLAGS) $< -o $@


clean :
                rm -rf $(OBJS) $(TARGET).a

new : 
                $(MAKE) clean 
                $(MAKE) 


AR= ar을 넣어준다. ar은 여러 개의 오브젝트를 하나의 아카이브로 묶어주는 작업을 한다. 

ARFLAGS= ar 옵션을 넣어준다.


댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

쉽게 설명한 파티클 필터(particle filter) 동작 원리와 예제

base64 인코딩 디코딩 예제 c 소스

간단한 칼만 필터(Kalman Filter) 소스 코드와 사용 예제