간단한 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)를 통해 윈도우 화면 미러링 방법

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

Embedded Linux USB Ethernet Gadget 사용하기

python winsound를 이용한 윈도우 환경에서 소리 재생 예제