make 활용 강좌 - 3강

|
make 활용 강좌 - 3강

2. 예제

먼저 gcc의 옵션과 삭제 명령에 대해 알아보자.

$ gcc -o test test.c
test.c를 컴파일(프리프로세싱-컴파일링 -어셈블링-링킹)하여 test라는 실행 파일을 만든다.

$ gcc -c test.c
test.c를 (프리프로세싱-컴파일링-어셈블링)만 하여 test.o라는 오브젝트 파일을 만든다.

$ rm test test.o
test 파일과 test.o 파일을 삭제한다.

#Makefile 작성 시 주의 사항 : gcc 앞에 tab이 있어야 한다.


예제1) test 실행파일 생성하기
$ vi Makefile
test : test.c
  gcc -o test test.c
:wq

$ make test
설명1) 
line1 : test 파일을 생성하려면 test.c 파일이 필요
line2 : line1의 조건이 만족되면 실행

실행 순서
  (1) 현재 디렉토리에 Makefile이 있는지 확인
  (2) 있으면 test 파일을 만드는 조건이 있는지 확인 --> test : test.c 발견
  (3) test.c라는 파일이 있는지 확인
  (4) 있으면 gcc -o test test.c 실행
  (5) 현재 디렉토리에 Makefile, test, test.c라는 파일이 존재함


예제2) test.o 파일만 생성하기
$ vi Makefile
test.o : test.c
  gcc -c test.c
:wq

$ make test.o


예제3) test.o 파일과 실행파일 모두 생성하기
$ vi Makefile
test : test.o
  gcc -o test test.o
test.o : test.c
  gcc -c test.c
:wq

$ make test
설명3)
line1 : test 파일을 생성하려면 test.o 파일이 필요
line2 : line1의 조건이 만족되면 실행
line3 : test.o 파일을 생성하려면 test.c 파일이 필요
line4 : line3의 조건이 만족되면 실행

실행 순서
  (1) 현재 디렉토리에 Makefile이 있는지 확인
  (2) 있으면 test 파일을 만드는 조건이 있는지 확인 --> test : test.o 발견
  (3) test.o 파일이 있는지 확인 --> 없음
  (4) test.o 파일이 없으므로 test.o 파일을 만드는 조건이 있는지 확인 --> test.o : test.c 발견
  (5) test.c 파일이 있는지 확인 --> 있음
  (6) gcc -c test.c 실행 --> test.o 파일 생성
  (7) test.o 파일이 생성되었으므로 line1의 조건을 만족함
  (8) gcc -o test test.c 실행 --> test 파일 생성
  (9) 현재 디렉토리에 Makefile, test, test.o, test.c 파일이 존재함


예제4) test, test.o 파일 삭제하기
vi Makefile
clean :
  rm test test.o
:wq

$ make clean
설명4) target file이 있어야 할 곳에 clean이라는 것이 있다. 그리고 dependency file도 없다.
clean이 파일이 아님에도 에러가 나지 않고 아래의 삭제 명령도 잘 실행된다.
그 이유는 파일 이름이 와야할 자리에 레이블도 올 수 있게끔 만들어 놓았기 때문이다.
따라서 위의 clean처럼 컴파일이 아닌 다른 작업을 할 때에는 파일 이름이 아닌 레이블을 적어준다.

'Makefile 강좌' 카테고리의 다른 글

make 활용 강좌 - 2강  (0) 2010.05.30
make 활용 강좌 - 1강  (0) 2010.05.30
And