Monday, April 20, 2015

Gcc Make

@ make utility
  : make는 Linux에서 대량의 소스를 쉽고 효율적으로 컴파일하기 위한 툴임

@ make grammar
  [target] : [dependencies]
  [tab][command]

@ makefile (or Makefile)
# this is a comment
test: test1.o test2.o test3.o
  gcc -o test \
        test1.o test2.o test3.o
test1.o: test1.c a.h
  gcc -c test1.c
test2.o: test2.c a.h b.h
  gcc -c test2.c
test3.o: test3.c b.h c.h
  gcc -c test3.c

# phony target, make utility regards it as what to be up-to-date (NO execute!)
clean:
rm test1.o test2.o test3.o

@ Examples
# make test
gcc -c test1.c
gcc -c test2.c
gcc -c test3.c
gcc -o test test1.o test2.o test3.o

# make test
make: `test'는 이미 갱신되었습니다.

# make clean
rm test1.o test2.o test3.o


# make clean
rm test1.o test2.o test3.o
rm: `test1.o'를 지울 수 없음: 그런 파일이나 디렉터리가 없습니다
rm: `test2.o'를 지울 수 없음: 그런 파일이나 디렉터리가 없습니다
rm: `test3.o'를 지울 수 없음: 그런 파일이나 디렉터리가 없습니다
make: *** [clean] 오류 1

# make test1.o // partial make
gcc -c test1.c

# make test2.o
gcc -c test2.c

# make test3.o
gcc -c test3.c

# make test
gcc -o test test1.o test2.o test3.o

No comments:

Post a Comment