간단한 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 옵션을 넣어준다.


댓글

이 블로그의 인기 게시물

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

아두이노(arduino) 심박센서 (heart rate sensor) 심박수 측정 example code

간단한 cfar 알고리즘에 대해

바로 프로젝트 적용 가능한 FIR Filter (low/high/band pass filter )를 c나 python으로 만들기

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