clean :
rm -f *.o
rm -f $(TARGET)
Makefile은 코드 컴파일 과정을 자동화하고 관리하는 데 사용되는 도구입니다.
Makefile의 장점:
Makefile의 기본 구조:
<Target>: <Dependencies>
<Recipe>
target
: 컴파일 결과물 (실행 파일, 오브젝트 파일 등)dependencies
: target
을 생성하기 위해 필요한 파일들command
: target
을 생성하기 위한 명령어 (주로 컴파일 명령어)자동 변수 : 맥락에 맞게 치환된다.
Makefile 예시:
Makefile
CC=gcc
CFLAGS=-I.
DEPS = hellomake.h
OBJ = hellomake.o hellofunc.o
%.o: %.c $(DEPS)$(CC) -c -o $@ $< $(CFLAGS)
hellomake: $(OBJ)$(CC) -o $@ $^ $(CFLAGS)
CC
: 사용할 컴파일러 (gcc)CFLAGS
: 컴파일 옵션 (헤더 파일 검색 경로)DEPS
: 의존성 파일 (hellomake.h)OBJ
: 오브젝트 파일 목록%.o: %.c $(DEPS)
: 오브젝트 파일 생성 규칙hellomake: $(OBJ)
: 실행 파일 생성 규칙OBJS
: 중간 산물 Object 파일 목록TARGET
: 빌드 대상 이름 (실행파일)LDFLAGS
: 링커 옵션LDLIBS
: 링크 라이브러리동적 할당자는 프로그램 실행 중에 필요한 만큼 메모리를 할당하고 해제하는 기능을 제공합니다.
C 표준 라이브러리 함수인 malloc
, calloc
, realloc
, free
를 사용하여 동적 메모리를 관리합니다.
void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size)
nmemb
: 요소의 개수, 각 요소의 크기 : size
바이트void *realloc(void *ptr, size_t size)
size
바이트로 변경합니다.free(void *ptr)
: ptr
이 가리키는 메모리 블록을 해제합니다.