1. ¼Ò°³

ÀÌ HOWTO¹®¼­´Â ÇÁ·Î±×·¡¸ÓµéÀÌ ¸®´ª½º »ó¿¡¼­ GNU ÇÁ·Î±×·¥À» »ç¿ëÇØ¼­ ¾î¶»°Ô ¶óÀ̺귯¸®¸¦ ¸¸µé°í »ç¿ëÇÏ´ÂÁö¿¡ ´ëÇÑ ¹æ¹ýÀ» ³íÀÇÇÑ´Ù. ``ÇÁ·Î±×·¥ ¶óÀ̺귯¸®''´Â ³ªÁß¿¡ º» ÇÁ·Î±×·¥¿¡ ÅëÇÕµÉ ÄÄÆÄÀÏµÈ ÄÚµå(ÀÚ·á)¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÆÄÀÏÀÌ´Ù. ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â ÇÁ·Î±×·¥ÀÌ ´õ ¸ðµâÈ­µÇ°í, ÄÄÆÄÀÏÇϱ⠺ü¸£°Ô Çϰí, ¾÷µ¥ÀÌÆ® Çϱ⠽±°Ô ¸¸µé¾îÁØ´Ù. ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â 3°¡Áö ŸÀÔÀ¸·Î ³ª´­¼ö ÀÖ´Ù: Á¤Àû ¶óÀ̺귯¸®(static library), °øÀ¯ ¶óÀ̺귯¸®(shared library), µ¿Àû ÀûÀç(DL)¶óÀ̺귯¸®(dynamically loaded library)

ÀÌ ¹®¼­´Â óÀ½À¸·Î ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â Àü¿¡ ½ÇÇà°¡´ÉÇÑ ÇÁ·Î±×·¥À¸·Î ¼³Ä¡µÇ´Â Á¤Àû ¶óÀ̺귯¸®¿¡ ´ëÇØ¼­ ³íÀÇÇϰڴÙ. ±×¸®°í ³ª¼­, ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇÒ¶§ ÀûÀçµÇ°í, ÇÁ·Î±×·¥»çÀÌ¿¡ °øÀ¯°¡ °¡´ÉÇÑ °øÀ¯ ¶óÀ̺귯¸®¿¡ ´ëÇØ¼­ ³íÀÇÇÑ´Ù. ¸¶Áö¸·À¸·Î, ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ¾ðÁ¦µçÁö ÀûÀçµÇ°í »ç¿ëµÉ ¼ö ÀÖ´Â µ¿Àû ÀûÀç ¶óÀ̺귯¸®¿¡ ´ëÇØ¼­ ³íÀÇÇÑ´Ù. µ¿ÀûÀûÀç(DL) ¶óÀ̺귯¸®´Â ´Ù¸¥ ¹æ½ÄÀÇ ¶óÀ̺귯¸® Çü½Ä(format)°ú ´Ù¸£Áö ¾Ê´Ù. (Á¤Àû, °øÀ¯ ¶óÀ̺귯¸®µµ DL ¶óÀ̺귯¸®·Î »ç¿ëµÉ ¼ö ÀÖ´Ù); ±× ´ë½Å¿¡, DL ¶óÀ̺귯¸®´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô »ç¿ëµÇ´Â ¹æ¹ý¿¡ ÀÇÇØ Â÷À̰¡ ÀÖ´Ù. ÀÌ HOWTO ¹®¼­´Â ´õ ¸¹Àº ¿¹Á¦°¡ ÀÖ´Â ´Ü¶ô, ´õ ¸¹Àº ¼Ò½ºÀÇ Âü°íÀÚ·á°¡ ÀÖ´Â ´Ü¶ôÀ» Æ÷ÇÔÇÑ´Ù.

¶óÀ̺귯¸®¸¦ °³¹ßÇϰí ÀÖ´Â °³¹ßÀÚµéÀº °øÀ¯ ¶óÀ̺귯¸®·Î ¸¸µé¾î¾ß ÇÑ´Ù. ¿Ö³ÄÇϸé, °øÀ¯¶óÀ̺귯¸®´Â ±× ¶óÀ̺귯¸®¸¦ »ç¿ëÇϰí ÀÖ´Â ÀÀ¿ë ÇÁ·Î±×·¥À¸·ÎºÎÅÍ ¶óÀ̺귯¸®¸¦ °³º°ÀûÀ¸·Î ¾÷µ¥ÀÌÆ® ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. µ¿Àû ÀûÀç(DL) ¶óÀ̺귯¸®´Â À¯¿ëÇÏ´Ù. ÇÏÁö¸¸, »ç¿ëÇϱâ À§ÇØ ´õ ¸¹Àº ·®ÀÇ ÀÛ¾÷À» ÇÊ¿äÇÏ°í ¸¹Àº ÇÁ·Î±×·¥µéÀÌ ÀÌ ¶óÀ̺귯¸®°¡ Á¦°øÇÏ´Â À¯¿¬¼ºÀ» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù. ¹Ý´ë·Î, Á¤Àû ¶óÀ̺귯¸®´Â ¶óÀ̺귯¸®¸¦ ¾÷µ¥ÀÌÆ® Çϴ°ÍÀÌ ´õ ¾î·Æ±â ¶§¹®¿¡ ÀϹÝÀûÀÎ ¸ñÀûÀ¸·Î »ç¿ëµÇ´Â ÇÁ·Î±×·¥¿¡´Â ÃßõÇϱâ Èûµé´Ù. ±×·¡µµ, °¢°¢Àº ±×µéÀÇ ÀåÁ¡À» °¡Áö°í ÀÖ°í, °¢°¢ÀÇ Å¸ÀÔ¿¡ ´ëÇÑ ÀåÁ¡Àº ±× ŸÀÔÀ» ¼³¸íÇÏ´Â ¼½¼Çµé¿¡¼­ ³íÀÇµÉ °ÍÀÌ´Ù.

°øÀ¯ ¶óÀ̺귯¸®¸¦ DLL(Dynamic Linked Library)¶ó°í Çϰųª, DL¶óÀ̺귯¸®·Î »ç¿ëµÇ´Â ¶óÀ̺귯¸®¿¡ ´ëÇØ DLLÀ̶ó°í Çϰųª, À§ÀÇ µÎ°¡Áö »óȲ¿¡ ¸Â´Â ¶óÀ̺귯¸®¸¦ DLLÀ̶ó°í ÇÏ´Â °ÍÀº ÀÇ¹Ì ¾ø´Â ÀÏÀÌ´Ù. ´ç½ÅÀÌ À§ÀÇ °ÍµéÁß ¾î´À Àǹ̸¦ °í¸£´õ¶ó°í, ÀÌ HOWTO ¹®¼­´Â ¸®´ª½º »ó¿¡¼­ µ¹¾Æ°¡´Â DLLs¸¦ ´Ù·ê °ÍÀÌ´Ù.

ÀÌ HOWTO¹®¼­´Â ¿À´Ã³¯ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼­ »ç¿ëµÇ´Â Çü½ÄÀÎ ½ÇÇà, ¿¬°á Çü½Ä(ELF : Executable and Linking Format)¿¡ ´ëÇØ¼­ ´Ù·ê°ÍÀÌ´Ù. GNU gcc´Â »ç½Ç ELFÀ̿ܿ¡ ´õ ¸¹Àº ¶óÀ̺귯¸®¸¦ ´Ù·é´Ù; Ưº°È÷, ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇÀº ¾ÆÁ÷±îÁöµµ Åð»öÇÑ a.outÇü½ÄÀ» »ç¿ëÇÑ´Ù. ±×·¯³ª, ±× Çü½ÄÀº ÀÌ ¹®¼­ÀÇ ¹üÀ§¸¦ ¹þ¾î³­´Ù.

¸¸¾à ´ç½ÅÀÌ ÇÁ·Î±×·¥À» ¸¹Àº ½Ã½ºÅÛ¿¡ Æ÷ÆÃÇÒ°ÍÀ̶ó¸é, ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÏ°í ¸¸µé±â À§Çؼ­ ¸®´ª½º ÅøÀ» Á÷Á¢ »ç¿ëÇϱ⺸´Ù GNU libtoolÀ» »ç¿ëÇÏ´Â °ÍÀ» °í·ÁÇ϶ó. GNU libtoolÀº ÀϰüµÇ°í, Æ÷ÆÃ°¡´ÉÇÑ ÀÎÅÍÆäÀ̽º¼Ó¿¡ °øÀ¯¶óÀ̺귯¸®ÀÇ º¹À⼺À» ¼û±â´Â ¿ªÇÒ(¿¹¸¦µé¾î, ¶óÀ̺귯¸®¸¦ ¸¸µé°í ¼³Ä¡ÇÏ´Â °Í)À» Áö¿øÇÏ´Â ÀϹÝÀûÀÎ ¶óÀ̺귯¸® Áö¿ø ½ºÅ©¸³Æ®ÀÌ´Ù. µ¿Àû ÀûÀç ¶óÀ̺귯¸®¸¦ À§ÇÑ Æ÷ÆÃ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϱâÀ§ÇØ, ´ç½ÅÀº ¸¹Àº Æ÷ÆÃ ÅøÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. GNU libtoolÀº ``libltdl''À̶ó´Â ÅøÀ» Æ÷ÇÔÇÑ´Ù. ±×¿Ü¿¡µµ, ´ç½ÅÀº ¸ðµâÀÇ µ¿Àû ÀûÀ縦 Áö¿øÇÏ´Â glib¶óÀ̺귯¸®(glibc¿Í È¥µ¿ÇÏÁö¸¶¶ó)¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. glib¿¡ ´ëÇØ¼­´Â http://developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-modules.html¿¡¼­ ´õ ¸¹ÀÌ Ã£¾Æ º¼ ¼ö ÀÖ´Ù. ´Ù½ÃÇѹø ¸»ÇÏÁö¸¸, ¸®´ª½º¿¡¼­´Â ÀÌ·± ±â´ÉÀº ÀÌ HOWTO¿¡ ±â¼úµÈ ±¸¼º°³³äÀ¸·Î ±¸Çö µÉ ¼ö ÀÖ´Ù. ¸¸¾à ´ç½ÅÀÌ ¸®´ª½º¿¡¼­ Äڵ带 °³¹ßÇϰųª µð¹ö±ë Çϰí ÀÖ´Ù¸é, ´ç½ÅÀº ÀÌ HOWTOÀÇ Á¤º¸¸¦ ¿øÇϰí ÀÖÀ» °ÍÀÌ´Ù.

ÀÌ HOWTOÀÇ º»·¡ÀÇ À§Ä¡´Â http://www.dwheeler.com/program-libraryÀ̰í, Linux Documentation Project (http://www.linuxdoc.org)¿¡ ¿Ã¶ó°¡ ÀÖ´Ù. ÀúÀÛ±Ç(Copyright)´Â Copyright (C) 2000 David A. WheelerÀ̰í, GPL ¶óÀ̼¾½º¸¦ µû¸¥´Ù; ´õ ¸¹Àº Á¤º¸¸¦ À§Çؼ­ ¸¶Áö¸· ¼½¼ÇÀ» Âü°íÇ϶ó.