Go to the first, previous, next, last section, table of contents.


¾ÆÄ«À̺ê ÆÄÀÏÀ» °»½ÅÇϱâ À§Çؼ­ make »ç¿ëÇϱâ(Using make to Update Archive Files)

¾ÆÄ«À̺ê ÆÄÀÏ(Archive files) À̶õ members ¶ó°í ºÒ¸®´Â ¼­ºê ÆÄÀϵéÀ» ´ã°í ÀÖ´Â ÆÄÀϵéÀÌ´Ù; À̵éÀº ÇÁ·Î±×·¥ ar ¿¡ ÀÇÇؼ­ °ü¸®µÇ°í ±×µéÀÇ ÁÖ¿ä »ç¿ëÀº ¸µÅ©¸¦ À§ÇÑ ¼­ºê·çƾ ¶óÀ̺귯¸®ÀÌ´Ù.

Ÿ°ÙÀ¸·Î½á ¾ÆÄ«ÀÌºê ¸â¹ö(Archive Members as Targets0

¾ÆÄ«À̺ê ÆÄÀÏÀÇ °³º° ¸â¹ö´Â make ¿¡¼­ Ÿ°ÙÀ̳ª Á¾¼Ó¹°·Î½á »ç¿ëµÉ ¼ö ÀÖ´Ù. archive ÀÇ member ¶ó´Â À̸§ÀÇ ¸â¹ö¸¦ ´ÙÀ½°ú °°ÀÌ ÁöÁ¤ÇÑ´Ù:

archive(member)

ÀÌ·± ±¸Á¶´Â Ÿ°Ù°ú Á¾¼Ó¹°µé¿¡¼­¸¸ °¡´ÉÇÏ°í ¸í·Éµé¿¡¼­´Â ºÒ°¡´ÉÇÏ´Ù. ¸í·Éµé ¾È¿¡¼­ »ç¿ëÇÒ ´ëºÎºÐÀÇ ÇÁ·Î±×·¥µéÀº ÀÌ·± ¹®¹ýÀ» Áö¿øÇÏÁö ¾Ê°í ¾ÆÄ«ÀÌºê ¸â¹öµé¿¡ ´ëÇؼ­ Á÷Á¢ ¾×¼ÇÀ» ÃëÇÒ ¼ö ¾ø´Ù. ´ÜÁö ar °ú ¾ÆÄ«À̺êµé¿¡ ´ëÇؼ­ ÀÛµ¿Çϵµ·Ï Ưº°È÷ °í¾ÈµÈ ´Ù¸¥ ÇÁ·Î±×·¥µéÀÌ ±×·¸°Ô ÇÒ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°ÙÀ» °»½ÅÇÏ´Â À¯È¿ÇÑ ¸í·ÉµéÀº ¹Ýµå½Ã ar À» »ç¿ëÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½ ±ÔÄ¢Àº ÆÄÀÏ `hack.o'À» º¹»çÇؼ­ `foolib' ¾ÆÄ«ÀÌºê ³» `hack.o' ¸â¹ö¸¦ »ý¼ºÇϵµ·Ï ¸»ÇÏ´Â °ÍÀÌ´Ù:

foolib(hack.o) : hack.o
        ar cr foolib hack.o

»ç½Ç °ÅÀÇ ¸ðµç ¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°ÙµéÀÌ ÀÌ·± ¹æ½ÄÀ¸·Î °»½ÅµÇ°í ÀÌ°ÍÀ» »ç¿ëÀÚ ´ë½Å ÇØÁÖ´Â ¹¬½ÃÀû ±ÔÄ¢ÀÌ Çϳª ÀÖ´Ù. ³ëÆ®(Note): ±× ¾ÆÄ«À̺ê ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ar ¿¡°Ô `c' Ç÷¡±×¸¦ ÁÖ¾î¾ß ÇÑ´Ù.

µ¿ÀÏÇÑ ¾ÆÄ«À̺êÀÇ ¸î°¡Áö ¸â¹öµéÀ» ÁöÁ¤ÇÏ·Á¸é °ýÈ£µé ¾È¿¡ ¸ðµç ¸â¹ö À̸§µéÀ» ¾µ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­:

foolib(hack.o kludge.o)

ÀÌ°ÍÀº ´ÙÀ½°ú µ¿ÀÏÇÏ´Ù:

foolib(hack.o) foolib(kludge.o)

¾ÆÄ«ÀÌºê ¸â¹ö ÂüÁ¶¿¡¼­ ½©-½ºÅ¸ÀÏ ¿ÍÀϵåÄ«µåµéÀ» »ç¿ëÇÒ¼öµµ ÀÕ´Ù. See section ÆÄÀÏ À̸§¿¡ ¿ÍÀϵåÄ«µå »ç¿ë(Using Wildcard Characters in File Names). ¿¹¸¦ µé¾î¼­ `foolib(*.o)' ´Â ±×°ÍÀÇ À̸§ÀÌ `.o' ·Î ³¡³ª´Â `foolib' ¾ÆÄ«À̺êÀÇ ¸ðµç Á¸ÀçÇÏ´Â ¸â¹öµé·Î È®ÀåµÈ´Ù; ¾Æ¸¶ `foolib(hack.o) foolib(kludge.o)'.

¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°Ùµé¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢(Implicit Rule for Archive Member Targets)

`o(m)' ¿Í °°ÀÌ º¸À̴ Ÿ°ÙÀº ¾ÆÄ«À̺ê ÆÄÀÏ o ÀÇ m À̶ó´Â À̸§ÀÇ ¸â¹ö¸¦ ³ªÅ¸³½´Ù´Â °ÍÀ» »ó±âÇÏÀÚ.

make ´Â ±×·± Ÿ°Ù¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢À» ã´Â´Ù. Ư¼ö ±â´ÉÀ¸·Î½á ÀÌ°ÍÀº `(m)' °ú ÀÏÄ¡ÇÏ´Â ¹¬½ÃÀû ±ÔÄ¢µéÀ» »ý°¢ÇÑ´Ù. ½ÇÁ¦ Ÿ°Ù `a(m)' °ú ÀÏÄ¡ÇÏ´Â °Íµé°ú ÇÔ²².

ÀÌ°ÍÀº Ÿ°ÙÀÌ `(%)' ÀΠƯ¼ö ±ÔÄ¢ÀÌ ºñ±³µÇµµ·Ï À¯¹ßÇÑ´Ù. ÀÌ ±ÔÄ¢Àº ÆÄÀÏ m ¸¦ ±× ¾ÆÄ«À̺ê·Î º¹»çÇÔÀ¸·Î½á Ÿ°Ù `a(m)' ¸¦ ¾÷µ¥ÀÌÆ®ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ ÀÌ°ÍÀº ÆÄÀÏ `bar.o' ¸¦, `bar.o' ¶ó´Â À̸§ÀÇ ¸â¹ö ·Î½á ¾ÆÄ«À̺ê ÆÄÀÏ `foo.a' ¾ÈÀ¸·Î º¹»çÇÔÀ¸·Î½á, ¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°Ù `foo.a(bar.o)' ¸¦ °»½ÅÇÒ °ÍÀÌ´Ù.

ÀÌ ±ÔÄ¢ÀÌ ´Ù¸¥ °Íµé°ú ¿¬¼âµÈ °ÍÀÌ¸é ±× °á°ú´Â ¾ÆÁÖ °­·ÂÇÑ °ÍÀÌ´Ù. ±×·¡¼­ `bar.c' ¶ó´Â ÆÄÀÏÀÌ ÀÖÀ» ¶§, `make "foo.a(bar.o)"' (¿©±â¼­ µû¿ÈÇ¥µéÀº `(' °ú `)' °¡ ½©¿¡ ÀÇÇؼ­ Ư¼öÇÏ°Ô Çؼ®µÇ´Â °ÍÀ» ¸·±â À§Çؼ­ ÇÊ¿äÇÏ´Ù) ´Â, makefile ÀÌ ¾ø´Ù°í ÇÏ´õ¶óµµ, ´ÙÀ½ ¸í·ÉµéÀÌ ½ÇÇàµÇµµ·Ï Çϱ⿡ ÃæºÐÇÑ °ÍÀÌ´Ù:

cc -c bar.c -o bar.o
ar r foo.a bar.o
rm -f bar.o

¿©±â¼­ make ´Â Áß°£ ÆÄÀϷνá `bar.o' ¸¦ »ý°¢ÇÑ´Ù. See section ¹¬½ÃÀû ±ÔÄ¢ÀÇ ¿¬¼â(Chains of Implicit Rules).

ÀÌ°Í°ú °°Àº ¹¬½ÃÀû ±ÔÄ¢µéÀº ÀÚµ¿ º¯¼ö `$%' ¸¦ »ç¿ëÇؼ­ ÀÛ¼ºµÈ´Ù. See section ÀÚµ¿ º¯¼öµé(Automatic Variables).

¾ÆÄ«À̺꿡 ÀÖ´Â ¾ÆÄ«ÀÌºê ¸â¹ö À̸§Àº µð·ºÅ丮 À̸§À» ´ãÀ» ¼ö ¾ø´Ù. ±×·¯³ª makefile ¾È¿¡¼­ ÀÌ°ÍÀÌ ±×·±°Íó·³ ÇÏ´Â °ÍÀº À¯¿ëÇÒ ¼ö ÀÖ´Ù. `foo.a(dir/file.o)' À̶ó´Â ¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°ÙÀ» ÀÛ¼ºÇÑ´Ù¸é make ´Â ´ÙÀ½°ú °°Àº ¸í·ÉÀ¸·Î ÀÚµ¿ °»½ÅÇÒ °ÍÀÌ´Ù:

ar r foo.a dir/file.o

ÀÌ°ÍÀº `dir/file.o' ÆÄÀÏÀ» `file.o' À̶ó´Â À̸§ÀÇ ¸â¹ö·Î º¹»çÇÏ´Â È¿°ú¸¦ °¡Áø´Ù. ±×·± »ç¿ë¿¡ ¿¬°á¿¡¼­ %D °ú %F ´Â À¯¿ëÇÒ ¼ö ÀÖ´Ù.

¾ÆÄ«ÀÌºê ½É¹ú µð·ºÅ丮 °»½Å(Updating Archive Symbol Directories)

¶óÀ̺귯¸®·Î½á »ç¿ëµÇ´Â ¾ÆÄ«À̺ê ÆÄÀÏÀº º¸Åë ´Ù¸¥ ¸ðµç ¸â¹öµé¿¡ ÀÇÇؼ­ Á¤ÀÇµÈ ¿ÜºÎ ½É¹ú À̸§µéÀÇ µð·ºÅ丮(3)¸¦ °®°í ÀÖ´Â `__.SYMDEF' ¶ó´Â À̸§ÀÇ Æ¯¼ö ¸â¹ö¸¦ ´ã°í ÀÖ´Ù. ´Ù¸¥ ¸â¹öµéÀ» °»½ÅÇÑ ÈÄ `__.SYMDEF' ¸¦ °»½ÅÇؼ­ ÀÌ°ÍÀÌ ´Ù¸¥ ¸â¹öµéÀ» ÀûÀýÇÏ°Ô ¿ä¾àÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ranlib ÇÁ·Î±×·¥À» ½ÇÇàÇÔÀ¸·Î½á ÇàÇØÁø´Ù:

ranlib archivefile

ÀϹÝÀûÀ¸·Î ÀÌ ¸í·ÉÀ» ±× ¾ÆÄ«À̺ê ÆÄÀÏÀ» À§ÇÑ ±ÔÄ¢¿¡ ³ÖÀ» °ÍÀÌ´Ù. ±×¸®°í ±× ¾ÆÄ«À̺êÀÇ ¸ðµç ¸â¹öµéµéÀÌ ±× ±ÔÄ¢ÀÇ Á¾¼Ó¹°µéÀÌ µÇµµ·Ï ÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­,

libfoo.a: libfoo.a(x.o) libfoo.a(y.o) ...
        ranlib libfoo.a

ÀÌ°ÍÀÇ È¿°ú´Â `x.o', `y.o' µîÀÇ ¾ÆÄ«ÀÌºê ¸â¹öµéÀ» °»½ÅÇÏ´Â °ÍÀÌ°í ranlib ¸¦ ½ÇÇàÇؼ­ `__.SYMDEF' ¶ó´Â ½É¹ú µð·ºÅ丮 ¸â¹ö¸¦ °»½ÅÇÏ´Â °ÍÀÌ´Ù. ¸â¹öµéÀ» °»½ÅÇÏ´Â ±ÔÄ¢µéÀº ¿©±â¿¡ ³ª¿ÍÀÖÁö ¾Ê´Ù; ´ëºÎºÐÀÇ »ç¶÷µéÀº, ÀÌÀü ¼½¼Ç¿¡¼­ ¼³¸íµÈ ¹Ù¿Í °°ÀÌ, ±×°ÍµéÀ» »ý·«ÇÏ°í ¾ÆÄ«À̺ê·Î ÆÄÀϵéÀ» º¹»çÇÏ´Â ¹¬½ÃÀû ±ÔÄ¢À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÀÌ°ÍÀº `__.SYMDEF' ¸â¹ö¸¦ ÀÚµ¿À¸·Î °»½ÅÇÏ´Â, GNU ar ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¶§, ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù.

¾ÆÄ«À̺긦 »ç¿ëÇÒ ¶§ÀÇ À§Çè(Dangers When Using Archives)

º´·Ä ó¸®(-j ¿É¼Ç; see section Æз¯·² ½ÇÇà(Parallel Execution))¿Í ¾ÆÄ«À̺긦 »ç¿ëÇÒ ¶§ ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀº ¾ÆÁÖ Áß¿äÇÏ´Ù. ¿©·¯ ar ¸í·ÉµéÀÌ µ¿ÀÏÇÑ ¾ÆÄ«À̺ê ÆÄÀÏ¿¡ ´ëÇؼ­ µ¿½Ã¿¡ ½ÇÇàµÇ¸é ±×µéÀº °¢±â ¼­·Î ´Ù¸¥ °ÍµéÀ» ¸ð¸¦°ÍÀÌ¸ç ±×·¡¼­ ±× ÆÄÀÏÀ» ¿À¿°½Ãų°ÍÀÌ´Ù.

¾Æ¸¶ make ÀÇ ¹Ì·¡ ¹öÀüÀÌ µ¿ÀÏÇÑ ¾ÆÄ«À̺ê ÆÄÀÏ¿¡ ´ëÇؼ­ ÀÛµ¿ÇÏ´Â ¸ðµç ¸í·ÉµéÀ» ½Ã¸®¾ó¶óÀÌÁî(ÀÏ·Ä·Î ¼¼¿ì±â)ÇÔÀ¸·Î½á ÀÌ·± ¹®Á¦¸¦ ȸÇÇÇÏ´Â ¸ÞÄ«´ÏÁòÀ» Á¦°øÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÇöÀçÀÇ °æ¿ì ´Ù¸¥ ¹æ½ÄÀ¸·Î ÀÌ·± ¹®Á¦¸¦ ȸÇÇÇϵµ·Ï makefile µéÀ» ÀÛ¼ºÇϰųª -j ¸¦ »ç¿ëÇؼ­´Â ¾ÈµÈ´Ù.

¾ÆÄ«À̺ê ÆÄÀÏÀÇ Á¢¹Ì»ç ±ÔÄ¢(Suffix Rules for Archive Files)

¾ÆÄ«À̺ê ÆÄÀϵéÀ» °ü¸®Çϴ Ư¼öÇÑ Á¾·ùÀÇ Á¢¹Ì»ç ±ÔÄ¢À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. Á¢¹Ì»ç ±ÔÄ¢µé¿¡ ´ëÇÑ ¿ÏÀüÇÑ ¼³¸íÀ» º¸·Á¸é See section ±¸´Ú´Ù¸® Á¢¹Ì»ç ±ÔÄ¢(Old-Fashioned Suffix Rules). GNU make ¿¡¼­´Â ¾ÆÄ«À̺ê Á¢¹Ì»ç ±ÔÄ¢µéÀÌ »çÀåµÇ¾ú´Ù. ¿Ö³Ä¸é ¾ÆÄ«À̺긦 À§ÇÑ ÆÐÅÏ ±ÔÄ¢ÀÌ Á» ´õ ÀϹÝÀûÀÎ ¸ÞÄ«´ÏÁò (see section ¾ÆÄ«ÀÌºê ¸â¹ö Ÿ°Ùµé¿¡ ´ëÇÑ ¹¬½ÃÀû ±ÔÄ¢(Implicit Rule for Archive Member Targets)) À̱⠶§¹®ÀÌ´Ù. ±×·¯³ª ±×µéÀº ´Ù¸¥ make µé°úÀÇ È£È¯¼º ¶§¹®¿¡ ±â´ÉÀº ³²¾Æ ÀÖ´Ù.

¾ÆÄ«À̺긦 À§ÇÑ Á¢¹Ì»ç ±ÔÄ¢À» ÀÛ¼ºÇϱâ À§Çؼ­ Ÿ°Ù Á¢¹Ì»ç `.a' (¾ÆÄ«À̺ê ÆÄÀϵ鿡 ´ëÇÑ ÀϹÝÀûÀÎ Á¢¹Ì»ç) ¸¦ »ç¿ëÇÏ´Â Á¢¹Ì»ç ±ÔÄ¢À» ÀÛ¼ºÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½Àº C ¼Ò½º ÆÄÀϵé·ÎºÎÅÍ ¶óÀ̺귯¸® ¾ÆÄ«À̺긦 °»½ÅÇÏ´Â ¿À·¡µÈ-½ºÅ¸ÀÏÀÇ Á¢¹Ì»ç ±ÔÄ¢ÀÌ´Ù:

.c.a:
        $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
        $(AR) r $@ $*.o
        $(RM) $*.o

ÀÌ°ÍÀº ´ÙÀ½°ú °°Àº ÆÐÅÏ ±ÔÄ¢°ú ºñ½ÁÇÏ°Ô ÀÛµ¿ÇÑ´Ù:

(%.o): %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
        $(AR) r $@ $*.o
        $(RM) $*.o

»ç½Ç ÀÌ°ÍÀº make °¡ `.o' ¸¦ Ÿ°Ù Á¢¹Ì»ç·Î½á °¡Áö´Â Á¢¹Ì»ç ±ÔÄ¢À» Çϳª º¸¾ÒÀ» ¶§ ÇàÇÏ´Â °Í ±×ÀÚüÀÌ´Ù. ÀÓÀÇÀÇ ´õºí-Á¢¹Ì»ç ±ÔÄ¢ `.x.a' Àº Ÿ°Ù ÆÐÅÏ `(%.o)' °ú Á¾¼Ó¹° ÆÐÅÏ `%.x' ¸¦ °¡Áö´Â ÆÐÅÏ ±ÔÄ¢À¸·Î º¯È¯µÈ´Ù.

¾î¶² ´Ù¸¥ Á¾·ùÀÇ ÆÄÀÏ¿¡ ´ëÇÑ Á¢¹Ì»ç·Î½á `.a' ¸¦ »ç¿ëÇÏ·Á°í ÇÒ·±Áö ¸ð¸£±â ¶§¹®¿¡, make ´Â ¾ÆÄ«À̺ê Á¢¹Ì»ç ±ÔÄ¢µéÀ» ÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î(see section ±¸´Ú´Ù¸® Á¢¹Ì»ç ±ÔÄ¢(Old-Fashioned Suffix Rules)), ÆÐÅÏ ±ÔÄ¢µé·Î º¯È¯ÇÑ´Ù. ±×·¡¼­ ´õºí-Á¢¹Ì»ç ±ÔÄ¢ `.x.a' ´Â µÎ°¡Áö ÆÐÅÏ ±ÔÄ¢µé: `(%.o): %.x' °ú `%.a: %.x' ¸¦ »ý¼ºÇÑ´Ù.


Go to the first, previous, next, last section, table of contents.