You cannot see this page without javascript.

make - 06 make 규칙

Programing 조회 수 92 추천 수 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  $@ $^   …

엮인글 :
https://tocup.net/xe/tech/64255/ff8/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
349 CentOS7 ▒ Doly의 센트OS(CentOS) 7 강좌11 4. 원격접속 - 1.VNC file [11] LynX 2014-10-23 2208
348 Programing HTML5 부라우저별 Video코덱 및 포멧변경 [29] LynX 2013-07-20 2179
347 Windows 7 윈도우7(Windows7) 공유폴더에 암호걸기 file [7] LynX 2013-07-25 1964
346 Programing 웹사이트 APK 만들기 file [1] [17] LynX 2015-07-02 1808
345 Internet Explorer KT 인터넷 접속제한 공유기 설정 LynX 2014-01-13 1770
344 Linux sendmail, dovecot 설치 및 설정 [20] LynX 2014-08-01 1757
343 Linux FreeBSD APM Source Compile LynX 2016-05-20 1717
342 HTML Tag css, cascading style sheets, 스타일 정의 방법 [9] LynX 2015-02-06 1691
341 Server 아파치 - 톰캣 연동하기 (PHP, JSP 같이 사용하기) LynX 2014-05-19 1622
340 Linux ODBC 설정 [30] LynX 2015-03-18 1571
339 Server Windows에서 Apache 2.x, Tomcat 7.x 연동 후 가상호스트를 이용하여 서비스하기 LynX 2014-06-10 1500
338 Linux USB부팅 리눅스의 변경 사항 초기화 [16] LynX 2015-01-07 1491
337 Server Josso file LynX 2013-12-19 1446
336 Linux LFS/Building - 빌드하기 [11] LynX 2014-08-06 1388
335 Programing make - 07 접미사 규칙 LynX 2017-02-22 1366
334 Programing meadco print LynX 2013-12-12 1361
333 Network GNS3 메뉴 , VPCS file [34] LynX 2015-04-29 1352
332 CentOS7 ▒ Doly의 CentOS7 강좌16 6. CentOS 네트워크 1 - 개념, 2 - 이더넷 설정 file [1] LynX 2014-10-23 1288
331 Server DNS [25] LynX 2015-07-16 1213
330 CentOS bash auto-com file LynX 2016-05-19 1145

XE Login