You cannot see this page without javascript.

make - 06 make 규칙

Programing 조회 수 248 추천 수 0 2017.02.22 17:21:50

make는 파일을 작성할 때 컴파일에 필요한 각 처리단계와 의존성을 분명히 지정하여 make를 처리하는 것을 명시적 규칙(explicit rules)이라 한다. 그리나 이에 반해 make가 미리 정의된 규칙을 이용해 make 파일을 단순화시키는 규칙을 암시적 규칙(inference rules)이라 한다.

 

다음은 암시적 규칙의 예를 살펴본다.

 

makefile  < makefile 작성>
1: OBJ=main_test.o func1.o func2.o
2: test : $(OBJ)
3:    cc -o  $@ $^
4: clean:
5:    rm $(OBJ)

 


make를 실행하여 본다.

 

$  make clean
        rm main_test.o func1.o func2.o

$  touch *
$  make
        cc -O -c main_test.c
        cc -O -c func1.c
        cc -O -c func2.c
        cc -o  test


대상 test를 생성하기 위해 make는 대상이 의존하는 파일들을 살피게 된다. 그러나 대상이 의존하는 main_test.o, func1.o, func2.o 가 존재하지 않기 때문에 make는 다시 main_test.o, func1.o, func2.o가 대상으로 있는 곳을 찾으려고 할 것이다. 그러나 make가 main_test.o, func1.o, func2.o가 있는 대상을 찾지 못하면 make의 동작이 중단될 것 같지만 위에서 보는 보와 같이 실제로 오류 없이 실행되는 것을 알 수 있다.

 

이는 make가 암시적 규칙에 따라 오브젝트 파일 main_test.o, func1.o, func2.o를 생성하기 위해, 이들이 의존하는 파일을 찾고 컴파일러 호출까지 수행하게 한다. 이를 make의 암시적 규칙이라 한다.

이러한 암시적 규칙은 다음과 같이 –p 옵션을 통하여 그 내용을 확인할 수 있다.

 

$  make -p
Macros:
OBJ = main_test.o func1.o func2.o
SHELL = /usr/bin/sh
…….
clean:
 commands:
        rm $(OBJ)
func2.o
func1.o
main_test.o
test:  (MAIN NAME)
 depends on: main_test.o  func1.o  func2.o
 commands:
        cc -o  $@ $^   …

엮인글 :
List of Articles
번호 제목 글쓴이 날짜 조회 수
369 APM mariadb download origin address LynX 2019-06-19 1989
368 APM What one can and should optimize LynX 2019-06-03 1415
367 CentOS mariadb install LynX 2019-05-31 1179
366 CentOS init mode change LynX 2019-05-30 1288
365 APM ext zip install LynX 2019-02-19 1612
364 APM ext ImageMagick install LynX 2019-02-19 511
363 3D Printer Pronterface(PrintRun) install file LynX 2018-09-13 753
362 CentOS Grub UUID change LynX 2018-08-08 867
361 Linux letsencrypt wildcard LynX 2018-07-26 798
360 Printer cura usb connection LynX 2018-07-06 666
359 CentOS cli 무선랜 LynX 2018-06-07 446
358 APM 윈도우에 APM 페키지 설치 file LynX 2018-05-04 586
357 APM MySQLTuner 설치 LynX 2018-04-27 544
356 CentOS CentOS7 커널 업데이트 LynX 2018-04-23 699
355 HTML Tag CSS 여러가지 모양 만들기 LynX 2018-02-08 771
354 Linux wkhtmltopdf wkhtmltoimage install LynX 2018-01-31 602
353 APM LZ4_LIBS Not Found (CentOS7, MariaDB 10.1.29) LynX 2018-01-03 485
352 APM mysql ./configure LynX 2017-12-15 804
351 APM PHP-7.2.0 LynX 2017-12-12 3157
350 Linux libiconv LynX 2017-12-08 558

XE Login