ÀÌÀüÆäÀÌÁö ´ÙÀ½ÆäÀÌÁö Â÷·Ê

4. Makefile¸¦ ÀÛ¼ºÇÒ ¶§ ¾Ë¸é ÁÁÀº °Íµé

MakefileÀ» ÀÛ¼ºÇÒ ¶§ ±âº»ÀûÀ¸·Î ¾Ë°í ÀÖÀ¸¸é À¯ÀÍÇÑ °ÍµéÀ» ±â¼úÇÑ´Ù. ÀÌÀü °­ÁÂÀÇ ³»¿ëÀ» ´ëü·Î ÀÌÇØÇÏ°í ÀÖ´Ù¸é ÁÁÀº ÆÁÀÌ µÉ °ÍÀÌ´Ù. ¸Þ´º¾ó¿¡ ³ª¿À´Â ±¤¹üÀ§ÇÑ ³»¿ëÀº ´Ù·çÁö ¾Ê°í ±âº»ÀûÀÎ °Íµé¿¡ °ü½ÉÀ» µÎ±â·Î ÇÑ´Ù.

4.1 ±ä ¸í·É¾î¸¦ ¿©·¯ ¶óÀÎÀ¸·Î Ç¥½ÃÇϱâ

MakefileÀ» ÀÛ¼ºÇÒ ¶§ ¸í·É¾î°¡ ÇÑ ÁÙÀ» ³Ñ¾î°£´Ù°í °¡Á¤ÇÏÀÚ. À̶§ ±×³É ÁÙÁÙÀÌ Àû´Â´Ù¸é Àб⵵ Èûµé°í, ÀÛ¼ºÇÏ´Â »ç¶÷µµ Á¶±Ý ÂòÂòÇÏ´Ù. À̶§ '\' ¹®ÀÚ¸¦ ÀÌ¿ëÇؼ­ ¿©·¯ ¶óÀÎÀ¸·Î ³ªÅ¸³¾ ¼ö ÀÖ´Ù. ÀÌ¹Ì C¾ð¾î¿¡ Àͼ÷ÇÑ »ç¶÷À̶ó¸é ³¸ÀÍÀº ±âÈ£ÀÏ °ÍÀÌ´Ù. ¾Æ·¡ÀÇ ¿¹Á¦¸¦ º¸ÀÚ.

¿¹Á¦ 13


OBJS = shape.o \
rectangle.o \
circle.o \
line.o \
bezier.o 

À§ÀÇ ¿¹Á¦´Â OBJS = shape.o rectangle.o circle.o line.o bezier.o ¶ó´Â ¹®ÀåÀ» ¿©·¯ ¶óÀÎÀ¸·Î Ç¥½ÃÇÑ °ÍÀÌ´Ù. º¸±â¿¡µµ ±ò²ûÇØ º¸ÀÌÁö ¾ÊÀº°¡.

4.2 È®ÀåÀÚ ±ÔÄ¢ÀÇ ÀÌ¿ë (Use suffix rule !!)

µÎ¹ø° Àå¿¡¼­ È®ÀåÀÚ ±ÔÄ¢¿¡ ´ëÇؼ­ ¸¹ÀÌ ¼³¸íÀ» Çß´Ù. MakefileÀ» ÀÛ¼ºÇÒ ¶§ C, C++, tex µîÀÇ ÆÄÀÏÀº ÀÌ¹Ì Á¤ÀǵǾî ÀÖ´Â ±ÔÄ¢À» ÀÌ¿ëÇÏ¸é °£´ÜÇÏ°í, ±ò²ûÇÑ MakefileÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. µÎ¹ø° Àå¿¡¼­ Á÷Á¢ ¿ì¸®°¡ ±ÔÄ¢À» °£´ÜÈ÷ ±¸ÇöÇØ º¸±âµµ Çߴµ¥, ÀÌ°ÍÀº È®ÀåÀÚ ±ÔÄ¢ÀÇ °³³äÀ» ¼³¸íÇϱâ À§ÇÔÀ̾ú´Ù.

¾î¶² ÆÄÀϵéÀÌ ÀÌ¹Ì ±ÔÄ¢À¸·Î Á¤ÇØÁ® ÀÖ´ÂÁö Çѹø »ìÆ캸±â·Î ÇÑ´Ù. ¾Æ·¡¿¡ ¿­°ÅµÈ ÆÄÀϵéÀº Ưº°È÷ µû·Î Á¤ÀÇÇÏÁö ¾ÊÀº »óÅ¿¡¼­ ¹Ù·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍµéÀÌ´Ù.(Make ¸Å´º¾ó¿¡ ¹ÙÅÁÀ» µÎ°í ÀÛ¼ºµÇ¾ú´Ù.)

À§¿¡ Á¤ÀÇµÈ ÆÄÀϸ¸ÀÌ make¿¡¼­ ó¸®ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. ±× ¹ÛÀÇ ÆÄÀÏ¿¡ ´ëÇؼ­´Â »ç¿ëÀÚ°¡ Á÷Á¢ Á¤ÀÇÇØ ÁÖ¸é ¾ó¸¶µçÁö make¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

±×·³ ÀÌÁ¨ À§¿Í °°Àº ÆÄÀϵéÀ» ó¸®Çϱâ À§ÇÑ ¸í·É¾î´Â ¾î¶² ¸ÅÅ©·Î·Î Á¤ÀǵǾî ÀÖ´ÂÁö ¾Ë¾Æº¸ÀÚ. ÀÌ¹Ì ¸»ÇßµíÀÌ ¾Æ·¡¿¡ ¿­°ÅµÈ ¸ÅÅ©·Î´Â ÀçÁ¤ÀÇ °¡´ÉÇÏ´Ù. °¡·É TEX = tex ÀÌÁö¸¸ ´ëºÎºÐ TEX = latex·Î ÀçÁ¤ÀÇ µÇ¾î¾ß ÇÒ °ÍÀÌ´Ù.

ÀÌ¹Ì µÎ¹ø° Àå¿¡¼­ ¹àÇûÁö¸¸ À§ÀÇ ¸í·É¾î¿¡¼­ »ç¿ëµÉ FLAG(¿É¼Ç)¿¡ Á¤ÀÇÇÑ ¸ÅÅ©·Î¿¡ ´ëÇؼ­µµ ¾Ë¾Æº¸±â·Î ÇÑ´Ù.

À§¾Ö¼­ '*'Ç¥½ÃÇÑ °ÍÀº ÀÚÁÖ ¾²ÀÌ°Ô µÉ Ç÷¡±×ÀÌ´Ù. À§¿¡¼­ Ç¥½ÃÇÑ ¿©·¯ °¡Áö ¸ÅÅ©·ÎµéÀ» ¹«Á¶°Ç ÀçÁ¤ÀÇ Ç϶ó´Â ¹è·Á¿¡¼­ÀÎÁö, ´ëºÎºÐ °ªÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê´Ù. °¡·É CÇÁ·Î±×·¥À» © ¶§ CFLAGS¸¦ ÀçÁ¤ÀÇ ÇØ¾ß ÇÒ °ÍÀÌ´Ù.

4.3 ¸ÅÅ©·Î ġȯ (Macro substitution)

¸ÅÅ©·Î¸¦ ÁöÁ¤ÇÏ°í, ±×°ÍÀ» ÀÌ¿ëÇÏ´Â °ÍÀ» ÀÌ¹Ì ¾Ë°í ÀÖ´Ù. ±×·±µ¥, ÇÊ¿ä¿¡ ÀÇÇØ ÀÌ¹Ì ¸ÅÅ©·ÎÀÇ ³»¿ëÀ» Á¶±×¸¸ ¹Ù²Ù¾î¾ß ÇÒ ¶§°¡ ÀÖ´Ù. ¸ÅÅ©·Î ³»¿ëÀÇ ÀϺθ¸ ¹Ù²Ù±â À§Çؼ­´Â $(MACRO_NAME:OLD=NEW)°ú °°Àº Çü½ÄÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù.

MY_NAME = Michael Jackson
YOUR_NAME = $(NAME:Jack=Jook)

À§ÀÇ ¿¹Á¦¿¡¼­´Â JackÀ̶õ ºÎºÐÀÌ JookÀ¸·Î ¹Ù²î°Ô µÈ´Ù. Áï YOUR_NAME À̶õ ¸ÅÅ©·ÎÀÇ °ªÀº Michael Jookson ÀÌ µÈ´Ù. ¾Æ·¡ÀÇ ¿¹Á¦¸¦ Çϳª ´õ º¸±â·Î ÇÑ´Ù.

OBJS = main.o read.o write.o
SRCS = $(OBJS:.o=.c)

À§ÀÇ ¿¹Á¦¿¡¼­´Â OBJS¿¡¼­ .c°¡ .o·Î ¹Ù²î°Ô µÈ´Ù. Áï ¾Æ·¡¿Í °°´Ù.

SRCS = main.c read.c write.c

À§ÀÇ ¿¹Á¦´Â ½ÇÁ¦·Î »ç¿ëÇÏ¸é ¾ÆÁÖ ÆíÇÒ ¶§°¡ ¸¹´Ù. °¡·É .o ÆÄÀÏ 100°³¿¡ .c ÆÄÀÏÀÌ °¢°¢ ÀÖÀ» ¶§ À̵éÀ» ´Ù ÀûÀ¸·Á¸é ¹«Ã´À̳ª Â¥Áõ³ª´Â ÀÏÀÌ µÉ °ÍÀÌ´Ù.

4.4 ÀÚµ¿ ÀÇÁ¸ °ü°è »ý¼º (Automatic dependency)

ÀϹÝÀûÀÎ makeÀÇ ±¸Á¶´Â ¾Æ·¡¿Í °°ÀÌ target, dependency, command°¡ ¿¬¼âÀûÀ¸·Î Á¤ÀǵǾî ÀÖ´Â °Í°ú °°´Ù°í ÇÏ¿´´Ù.


target : dependency
                command
                ...

±×·±µ¥ À§¿¡¼­ command°¡ ¾øÀÌ Å¸°Ù°ú ÀÇÁ¸ °ü°è¸¸ Ç¥½Ã°¡ µÇ¸é À̴ Ÿ°ÙÀÌ ¾î´À ÆÄÀÏ¿¡ ÀÇÁ¸ÇÏ°í ÀÖ´ÂÁö Ç¥½ÃÇØ ÁÖ´Â Á¤º¸ÀÇ ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ·± Á¤º¸´Â MakefileÀ» ÀÛ¼ºÇÒ ¶§ ¾ø¾î¼­´Â ¾ÈµÇ´Â ºÎºÐÀÌ´Ù. (ÀÌ ºÎºÐÀÌ ¾øÀ¸¸é, make´Â Á¤¸» ¹Ùº¸Ã³·³ ÇൿÇÕ´Ï´Ù.)

±×·±µ¥ ÀÏÀÏÀÌ ÀÌ·± Á¤º¸¸¦ ¸¸µç´Ù´Â °ÍÀº ½¬¿î ÀÏÀÌ ¾Æ´Ï´Ù. ÆÄÀÏÀÌ 1000°³¶ó°í ÇÒ ¶§ ÀÌ°ÍÀ» ¾îÄÉ ´Ù Ç¥½ÃÇÏ´©...

ÀÌ·± ´ÜÁ¶·Ó°í ±ÍÂúÀº ÀÏÀ» ÀÚµ¿À¸·Î ÇØÁÖ´Â ÁÁÀº À¯Æ¿¸®Æ¼°¡ ÀÖ´Ù. ¿ì¼± gccmakedep°¡ ÀÖ´ÂÁö È®ÀÎÇØ º¸ÀÚ. gccmakedep´Â ¾î¶² ÆÄÀÏÀÇ ÀÇÁ¸ °ü°è¸¦ ÀÚµ¿À¸·Î Á¶»çÇؼ­ MakefileÀÇ µÞºÎºÐ¿¡ ÀÚµ¿À¸·Î ºÙ¿© ÁÖ´Â À¯Æ¿¸®Æ¼ÀÌ´Ù. gccmakedep°¡ ¾ø´Ù¸é gcc -M XX.c ¶ó°í Çغ¸ÀÚ. ±×·¯¸é XX.cÀÇ ÀÇÁ¸ °ü°è°¡ È­¸é¿¡ Ãâ·ÂµÊÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. (gccmakedep µµ ³»ºÎÀûÀ¸·Î gcc -M À» »ç¿ëÇÑ´Ù.)

ÇÁ·Î±×·¥À» ¼³Ä¡ÇÒ ¶§ make dep ¶ó´Â °ÍÀ» Ä£ ±â¾ïÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÆÄÀϵéÀÇ ÀÇÁ¸ °ü°è¸¦ ÀÛ¼ºÇØ Áشٴ ÀǹÌÀÌ´Ù. ±×·³ ¿ì¸®ÀÇ Makefile¿¡µµ ÀÌ·± ±â´ÉÀ» ÷°¡ÇØ º¸±â·Î ÇÑ´Ù.

¿¹Á¦ 14


.SUFFIXES = .c .o 
CFLAGS = -O2 -g

OBJS = main.o read.o write.o 
SRCS = $(OBJS:.o=.c)

test : $(OBJS)
                $(CC) -o test $(OBJS)

dep :
                gccmakedep $(SRCS)

À§ÀÇ MakefileÀ» ÀÌÇØÇÒ ¼ö ÀÖ´Ù¸é ÀÌÁ¦ Makefile¿¡ ´ëÇؼ­ ¾î´À Á¤µµ µµ°¡ ÅÕ´Ù°í Çصµ ¹«¹æÇÒ °ÍÀÌ´Ù. À§ÀÇ ¿¹Á¦¿¡¼­ ÆÄÀϵ鰣ÀÇ ÀÇÁ¸ °ü°è°¡ ¾ø´Ù. ±×·³ ÀÌÁ¦ make dep À» ½á¼­ ÀÚµ¿ÀûÀ¸·Î »ý¼º½ÃÄÑ º¸ÀÚ.

% make dep 
% vi(emacs) Makefile

MakefileÀÇ µÞºÎºÐ¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀÌ ºÙ¾î ÀÖ´Â °ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù.

¿¹Á¦ 15


# DO NOT DELETE
main.o: main.c /usr/include/stdio.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/libio.h \
/usr/include/_G_config.h io.h
read.o: read.c io.h
write.o: write.c io.h

main.o¿¡´Â Á¶±Ý ÀÚÁú±¸·¹ÇÑ Çì´õ ÆÄÀϱîÁö ºÙ¾î ÀÖ´Ù. ÀÌ°ÍÀº Çì´õ ÆÄÀÏ ¾È¿¡¼­ include ÇÏ´Â ÆÄÀϵéÀ» ´Ù ã´Ù º¸´Ï±î ±×·± °ÍÀÌ´Ù. º°·Î ½Å°æ¾µ °ÍÀº ¾ø°í... ´ëÃæ ¿ì¸®°¡ Áö±Ý±îÁö ¼ÕÀ¸·Î ÀÛ¼ºÇØ ¿Â °Í°ú °ÅÀÇ Èí»çÇÔÀ» ¾Ë ¼öÀÖ´Ù. ¾Æ´Ï ¿ÀÈ÷·Á ´õ Á¤È®ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. (ÀÌÁ¦ºÎÅÍ make´Â ½º¸¶Æ®ÇÏ°Ô µ¿ÀÛÇÑ´Ù.)

4.5 ´ÙÁß Å¸°Ù (Multiple target)

ÇϳªÀÇ Makefile¿¡¼­ ²À ÇϳªÀÇ °á°ú¸¸ ¸¸µé¾î ³»¶ó´Â ¹ýÀº ¾ø´Ù. °¡·É °á°ú ÆÄÀÏÀÌ 3°³°¡ ÇÊ¿äÇÏ´Ù°í ÇÏÀÚ. ¾Æ·¡ÀÇ ¿¹Á¦¸¦ º¸±â·Î ÇÑ´Ù.

¿¹Á¦ 15


.SUFFIXES = .c .o 
CC = gcc
CFLAGS = -O2 -g

OBJS1 = main.o test1.o <- °¢°¢ÀÇ ¸ÅÅ©·Î¸¦ Á¤ÀÇ
OBJS2 = main.o test2.o 
OBJS3 = main.o test3.o 
SRCS = $(OBJS1:.o=.c) $(OBJS2:.o=.c) $(OBJS3:.o=.c) 

all : test1 test2 test3 <- ¿ä±â¿¡ ÁÖÀÇ 

test1 : $(OBJS1)
                $(CC) -o test1 $(OBJS1) 

test1 : $(OBJS2)
                $(CC) -o test2 $(OBJS2)

test1 : $(OBJS3)
                $(CC) -o test3 $(OBJS3)

dep :
                gccmakedep $(SRCS)

À§ÀÇ ÇÁ·Î±×·¥Àº make all À» ÇÔÀ¸·Î½á µ¿ÀÛÇÑ´Ù. ½ÇÁ¦·Î µ¿ÀÛ½ÃÄÑ º¸¸é ¾Æ·¡¿Í °°Àº °á°ú°¡ ³ª¿Â´Ù.

% make all (¶Ç´Â make)
gcc -O2 -g -c main.c -o main.o
gcc -O2 -g -c test1.c -o test1.o
gcc -o test1 main.o test1.o <- test1 ÀÇ »ý¼º
gcc -O2 -g -c test2.c -o test2.o
gcc -o test2 main.o test2.o <- test2 ÀÇ »ý¼º
gcc -O2 -g -c test3.c -o test3.o
gcc -o test3 main.o test3.o <- test3 ÀÇ »ý¼º

4.6 ¼øȯ make (Recursive MAKE)

±Ô¸ð°¡ Å«(?) ÇÁ·Î±×·¥µéÀº ÆÄÀϵéÀÌ ÇϳªÀÇ µð·ºÅ丮¿¡ ÀÖÁö ¾Ê´Â °æ¿ì°¡ ¸¹´Ù. ¿©·¯ °³ÀÇ ¼­ºê½Ã½ºÅÛÀÌ Àüü ½Ã½ºÅÛÀ» ±¸¼ºÇÑ´Ù°í °¡Á¤ÇÏ¸é °¢ ¼­ºê½Ã½ºÅÛ¿¡ MakefileÀÌ Á¸ÀçÇÑ´Ù. (¼­ºê½Ã½ºÅÛ = ¼­ºêµð·ºÅ丮) µû¶ó¼­ ¿©·¯ °³ÀÇ MakefileÀ» µ¿ÀÛ½Ãų ÇÊ¿ä°¡ ÀÖµµ·Ï MakefileÀ» °íÃÄ º¸ÀÚ. ¼­ºêµð·ºÅ丮¿¡ ÀÖ´Â MakefileÀ» µ¿ÀÛ½ÃÅ°´Â ¹æ¹ýÀº ÀÇ¿Ü·Î °£´ÜÇÏ´Ù. ¾Æ·¡ÀÇ °£´ÜÇÑ ¿¹Á¦¸¦ º¸ÀÚ.

¿¹Á¦ 16


subsystem:
                cd subdir; $(MAKE) .....(1)

subsystem:
                $(MAKE) -C subdir .....(2)

À§ÀÇ ¿¹Á¦¿¡¼­ (1)°ú (2)´Â µ¿ÀÏÇÑ ¸í·ÉÀ» ¼öÇàÇÑ´Ù (1)À» ±âÁ¸À¸·Î µ¿ÀÛÀ» Çѹø ¹¦»çÇØ º¸ÀÚ. ¿ì¸®°¡ ¸¸µé ½Ã½ºÅÛÀÇ Å¸°ÙÀÌ subsystemÀÌ´Ù. (À̸§Àº ¾Æ¹«·¡µµ »ó°ü¾ø´Ù) ¿ì¼± subdirÀ̶ó´Â °÷À¸·Î °¡¼­, °Å±â¿¡ ÀÖ´Â MakefileÀ» µ¿ÀÛ½ÃÅ°°Ô µÈ´Ù. (°£´ÜÇÏÁÒ.) MAKE¶ó´Â °ÍÀº ±×³É make¶ó´Â ¸í·É¾î¸¦ Ç¥½ÃÇÏ´Â ¸ÅÅ©·ÎÀÏ »Ó... ±×·³ ¿ÏÀüÇÑ ¿¹Á¦¸¦ Çѹø ±¸¼ºÇØ º¸±â·Î ÇÑ´Ù.

¿¹Á¦ 16


.SUFFIXES = .c .o
CC = gcc
CFLAGS = -O2 -g

all : DataBase Test <- ¿ä±â¿¡ ÁýÁß.

DataBase:
                cd db ; $(MAKE) <- db ·Î À̵¿Çؼ­ make ½ÇÇà

Test: 
                cd test ; $(Make) <- db ·Î À̵¿Çؼ­ make ½ÇÇà

À§ÀÇ ¿¹Á¦¿¡¼­ db, test µð·ºÅ丮¿¡ ÀÖ´Â MakefileÀº Áö±Ý±îÁö ¿ì¸®°¡ °øºÎÇß´ø Makefile°ú °ÅÀÇ Èí»çÇÏ´Ù°í °¡Á¤ÇÏÀÚ. ±×·³ À§ÀÇ MakefileÀ» ½ÇÇà½ÃÄÑ º»´Ù.

% make
cd db ; make
make[1]: Entering directory`/home/raxis/TEST/src'
gcc -O2 -g -c DBopen.c -o DBopen.o
gcc -O2 -g -c DBread.c -o DBread.o
gcc -O2 -g -c DBwrite.c -o DBwrite.o
make[1]: Leaving directory `/home/windows/TEST/src'
cd test ; make
make[1]: Entering directory `/home/raxis/TEST/test'
gcc -O2 -g -c test.c -o test.o
make[1]: Leaving directory `/home/windows/TEST/test'

À§ÀÇ °¡»ó ½ÇÇàÀ» º¸¸é ¿ì¼± db·Î °¡¼­ °Å±âÀÇ MakefileÀ» ¼öÇà½ÃÅ°°í, ´ÙÀ½¿¡´Â test·Î °¡¼­ MakefileÀ» ½ÇÇà½ÃÅ´À» º¼ ¼ö ÀÖ´Ù. ¿ì¼±Àº ´Ü¼øÇÏ°Ô ÄÄÆÄÀϸ¸ ½ÃÄ״µ¥, ´Ù¸£°Ô Çѹø »ý°¢ÇØ º¸ÀÚ. db µð·ºÅ丮¿¡¼­ÀÇ ÃÖÁ¾ Ÿ°ÙÀ¸·Î °¡·É db.aÀ» ¸¸µé¾î ³»°í test µð·ºÅ丮¿¡¼­ À̸¦ ¸µÅ© ½ÃŲ´Ù°í »ý°¢ÇÏ¸é ²Ï ±¦ÂúÀº ½Ã³ª¸®¿À°¡ µÉ °ÍÀÌ´Ù. À§¿¡¼­ 1À̶ó°í ³ªÅ¸³­ °ÍÀº ÇöÀçÀÇ ·¹º§À» ÀǹÌÇÑ´Ù. ¿ø·¡ µð·ºÅ丮ÀÇ ·¹º§ÀÌ 0ÀÌ°í, ¿©±â¼­´Â ·¹º§ÀÌ Çϳª ´õ ³»·Á°¬À¸¹Ç·Î 1À̶ó°í Ç¥½ÃµÈ °ÍÀÌ´Ù.

4.7 ºÒÇÊ¿äÇÑ ÀçÄÄÆÄÀÏ ¸·±â

ÀÇÁ¸ °ü°è ±ÔÄ¢¿¡ ÀÇÇØ Çϳª°¡ ¹Ù²î¸é ±×¿¡ ¿µÇâ¹Þ´Â ¸ðµç ÆÄÀÏÀÌ ¹Ù²ï´Ù°í ¾Õ¿¡¼­ ¸»Çß´Ù. ±×·¯³ª ´Ù¸¥ ÆÄÀϵ鿡°Ô ¾Æ¹« ¿µÇâÀ» ÁÖÁö ¾Êµµ·Ï ¼öÁ¤ÇÏ¿´´Âµ¥µµ ÀçÄÄÆÄÀÏÀ» ½ÃµµÇÑ´Ù¸é ½Ã°£ ³¶ºñ°¡ µÉ ¼öµµ ÀÖ´Ù. °¡·É ¸ðµç .c ÆÄÀÏ¿¡¼­ include ÇÏ´Â Çì´õ ÆÄÀÏ¿¡¼­ »õ·Î¿î #define PI 3.14 ¶ó°í Á¤ÀǸ¦ Çß´Ù°í °¡Á¤ÇÏÀÚ. ±×¸®°í PI¶ó´Â °ÍÀº ¾Æ¹« °÷¿¡¼­µµ »ç¿ëÀ» ÇÏÁö ¾Ê´Â´Ù.

À̶§´Â 'make -t' ¶ó°í Çغ¸ÀÚ. -t ´Â touch¸¦ ÀǹÌÇÏ´Â ¿É¼ÇÀ¸·Î½á ÄÄÆÄÀÏÀ» ÇÏÁö ¾Ê´Â ´ë½Å ÆÄÀÏÀÇ »ý¼º ³¯Â¥¸¸ °¡Àå ÃÖ±ÙÀ¸·Î ¹Ù²Ù¾î ³õ´Â´Ù. »õ·Î ÄÄÆÄÀÏ µÈ °Íó·³ ó¸®¸¦ ÇÏ´Â °ÍÀÌ´Ù. touchÀ¯Æ¿¸®Æ¼ ¸í··¾î¿¡ Àͼ÷ÇÑ »ç¶÷À̶ó¸é ÀÌÇØÇÒ °ÍÀÌ´Ù. touch´Â ÆÄÀÏÀÇ »ý¼º ³¯Â¥¸¦ ÇöÀç·Î ¹Ù²Ù¾î ÁÖ´Â °£´ÜÇÑ À¯Æ¿¸®Æ¼ÀÌ´Ù.


ÀÌÀüÆäÀÌÁö ´ÙÀ½ÆäÀÌÁö Â÷·Ê