✅ 목표 (Goal)

의존성 분석 프로그램 gccmakedp에 대해 알아보자.

✅ gccmakedep

아래 프로그램 설치

$ sudo apt install xutils-dev

의존성 추가

$ gccmakedep main.c dog.c cat.c tiger.c

실행

$ gccmakedep 
# 컴파일러와 컴파일 옵션 정의
CC = gcc #사용할 컴파일 gcc
CFLAGS = -Wall -g

# 타겟 실행 파일
TARGET = zoo

# 소스 파일과 객체 파일
SRCS = main.c dog.c cat.c tiger.c
OBJS = main.o dog.o cat.o tiger.o

# 최종 실행 파일 생성 규칙
$(TARGET): $(OBJS)
	$(CC) -o $(TARGET) $(OBJS) 

# 개별 소스 파일 -> 객체 파일 규칙
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

# clean 규칙 (빌드 파일 정리)
clean:
	rm -f $(OBJS) $(TARGET)

# DO NOT DELETE
main.o: main.c /usr/include/stdc-predef.h main.h dog.h \\
 /usr/include/stdio.h \\
 /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \\
 /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \\
 /usr/include/x86_64-linux-gnu/bits/wordsize.h \\
 /usr/include/x86_64-linux-gnu/bits/long-double.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \\
 /usr/include/x86_64-linux-gnu/bits/types.h \\
 /usr/include/x86_64-linux-gnu/bits/timesize.h \\
 /usr/include/x86_64-linux-gnu/bits/typesizes.h \\
 /usr/include/x86_64-linux-gnu/bits/time64.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \\
 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h cat.h tiger.h
dog.o: dog.c /usr/include/stdc-predef.h dog.h /usr/include/stdio.h \\
 /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \\
 /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \\
 /usr/include/x86_64-linux-gnu/bits/wordsize.h \\
 /usr/include/x86_64-linux-gnu/bits/long-double.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \\
 /usr/include/x86_64-linux-gnu/bits/types.h \\
 /usr/include/x86_64-linux-gnu/bits/timesize.h \\
 /usr/include/x86_64-linux-gnu/bits/typesizes.h \\
 /usr/include/x86_64-linux-gnu/bits/time64.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \\
 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h
cat.o: cat.c /usr/include/stdc-predef.h cat.h /usr/include/stdio.h \\
 /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \\
 /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \\
 /usr/include/x86_64-linux-gnu/bits/wordsize.h \\
 /usr/include/x86_64-linux-gnu/bits/long-double.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \\
 /usr/include/x86_64-linux-gnu/bits/types.h \\
 /usr/include/x86_64-linux-gnu/bits/timesize.h \\
 /usr/include/x86_64-linux-gnu/bits/typesizes.h \\
 /usr/include/x86_64-linux-gnu/bits/time64.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \\
 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h
tiger.o: tiger.c /usr/include/stdc-predef.h tiger.h /usr/include/stdio.h \\
 /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \\
 /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \\
 /usr/include/x86_64-linux-gnu/bits/wordsize.h \\
 /usr/include/x86_64-linux-gnu/bits/long-double.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs.h \\
 /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h \\
 /usr/lib/gcc/x86_64-linux-gnu/9/include/stdarg.h \\
 /usr/include/x86_64-linux-gnu/bits/types.h \\
 /usr/include/x86_64-linux-gnu/bits/timesize.h \\
 /usr/include/x86_64-linux-gnu/bits/typesizes.h \\
 /usr/include/x86_64-linux-gnu/bits/time64.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \\
 /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \\
 /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \\
 /usr/include/x86_64-linux-gnu/bits/sys_errlist.h