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이 가리키는 메모리 블록을 해제합니다.