Makefile 강좌
make 활용 강좌 - 3강
인뜨라야
2010. 5. 30. 18:16
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처럼 컴파일이 아닌 다른 작업을 할 때에는 파일 이름이 아닌 레이블을 적어준다.