Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > d40f11cf5b21d4287bbb5af7cbeec0a9 > files > 59

howto-text-ko-2006-5mdv2010.0.noarch.rpm

  ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ÇÏ¿ìÅõ

  David A. WheelerÁöÀ½
  ¹öÀü 0.60, 2000³â 4¿ù 27ÀÏ
  ¹ø¿ª : Ȳ Áø Èñ(jeenee@soback.kornet.net <mailto:jeenee@soback.kor­
  net.net>)
  2000³â 5¿ù

  ÀÌ ÇÏ¿ìÅõ ¹®¼­´Â ÇÁ·Î±×·¡¸Ó°¡ ¾î¶»°Ô ¸®´ª½ºÈ¯°æ¿¡¼­ ÇÁ·Î±×·¥
  ¶óÀ̺귯¸® ¸¦ »ý¼ºÇÏ°í »ç¿ëÇÒ¼ö ÀÖ´ÂÁö¸¦ ´Ù·ç°í ÀÖÀ¸¸ç ¶óÀ̺귯¸®¿¡´Â
  Á¤Àû ¶óÀ̺귯 ¸®, °øÀ¯ ¶óÀ̺귯¸® ¹× µ¿Àû(DL) ¶óÀ̺귯¸®°¡ ÀÖ´Ù.
  ______________________________________________________________________

  ¸ñÂ÷

  1. °³¿ä
  2. Á¤Àû ¶óÀ̺귯¸®
  3. °øÀ¯ ¶óÀ̺귯¸®
  4. µ¿Àû(DL) ¶óÀ̺귯¸®
  5. ºÎ°¡Àû ³»¿ëµé
  6. »ç¿ë¹ýÀÇ ¿¹½Ã
  7. ´Ù¸¥ Âü°í ¹®Çå ¹× ¼Ò½º
  8. ÀúÀ۱ǰú ¶óÀ̼¾½º
  9. ÁÖ¼®

  ______________________________________________________________________

  1.  °³¿ä

  ÀÌ ÇÏ¿ìÅõ ¹®¼­´Â ÇÁ·Î±×·¡¸Ó°¡ ¾î¶»°Ô   GNUÀÇ Åø¼ÂÀ» ÀÌ¿ëÇÏ¿© ¸®´ª½º¿¡
  ¼­ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ »ý¼ºÇÏ°í ÀÌ¿ëÇÒ¼ö ÀÖ´ÂÁö¸¦ ´Ù·é´Ù. ÇÁ·Î±×·¥
  ¶óÀÌ ºê·¯¸®¶õ ´Ü¼øÇÏ°Ô º¸¸é ³ªÁß¿¡ ¾î¶² ÇÁ·Î±×·¥  Äڵ忡 ³¢¿ö³Ö¾îÁú¼ö
  ÀÖ´Â ÄÄ ÆÄÀÏµÈ ÄÚµå(±×¸®°í µ¥ÀÌÅÍ)°¡ µé¾îÀÖ´Â ÆÄÀÏÀ̸ç,  À̸¦ ÅëÇؼ­
  ÇÁ·Î±×·¥µéÀº ´õ¿í ¸ðµâÈ­µÉ¼ö ÀÖÀ¸¸ç, ÀçÄÄÆÄÀÏÀÌ ºü¸£¸ç, °»½ÅÀÌ
  ¿ëÀÌÇØÁø´Ù. ÇÁ·Î±×·¥  ¶ó À̺귯¸®´Â Á¤Àû, °øÀ¯, µ¿Àû(DL) ¶óÀ̺귯¸®ÀÇ
  ¼¼°¡Áö ÇüÅ·Π´ëº°µÈ´Ù.  ¸ÕÀú ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±âÀü¿¡ ¹Ì¸®
  ½ÇÇàÇÁ·Î±×·¥¿¡ ¼³Ä¡µÇ´Â  Á¤Àû  ¶óÀÌºê ·¯¸®°¡ ´Ù·ç¾î Áú°ÍÀ̸ç, ±×
  ´ÙÀ½Àº ÇÁ·Î±×·¥ ½ÃÀ۽ÿ¡ ÀûÀçµÇ¾î ¿©·¯  ÇÁ·Î±× ·¥¿¡ ÀÇÇØ °øÀ¯µÇ´Â °øÀ¯
  ¶óÀ̺귯¸®, ±×¸®°í  ¸¶Áö¸·À¸·Î ÇÁ·Î±×·¥ ½ÇÇàÁßÀÇ ¾î¶² ¼ø°£¿¡µµ ÀûÀç
  ¹× »ç¿ëÀÌ °¡´ÉÇÑ µ¿Àû ¶óÀ̺귯¸®¸¦ ´Ù·ê °ÍÀÌ´Ù. µ¿Àû ¶óÀ̺귯¸®¸¦
  ´Ù¸¥ ¾î¶² ÇÑ  ¶óÀ̺귯¸®ÀÇ Æ÷¸ËÀ̶ó°í  º¸±â´Â ¾î·Á¿ï  °ÍÀÌ ´Ù.(Á¤Àû
  ¶óÀ̺귯¸®ÀÌ°Ç °øÀ¯ ¶óÀ̺귯¸®ÀÌ°Ç ¸ðµÎ µ¿Àû  ¶óÀ̺귯¸®·Î  »ç¿ë
  °¡´ÉÇÔ) ´ë½Å µ¿Àû ¶óÀ̺귯¸®°¡ ´Ù¸¥Á¡Àº  ±×°ÍÀÌ ÇÁ·Î±×·¡¸Ó¿¡ ÀÇÇؼ­
  ÀÌ¿ë µÇ´Â ¹æ½Ä¿¡ ÀÖ´Â °ÍÀÌ´Ù. ÀÌ Ã¥ÀÇ ´Ù¸¥ Àå¿¡´Â ±×°ÍÀÇ ¿¹µé°ú Âü°íÇÒ
  ¸¸ÇÑ ¹® ÇåµéÀ» ½ÇÀ» °ÍÀÌ´Ù.

  ÀÌ Ã¥Àº ÀÌÁ¦´Â  ´ëºÎºÐÀÇ  ¸®´ª½º ¹èÆ÷º»¿¡¼­ »ç¿ëµÇ´Â ELF  Æ÷¸ËÀÇ  ½ÇÇà
  ÇÁ·Î±×·¥°ú ¶óÀ̺귯¸®¸¸À» ´Ù·ê °ÍÀÌ´Ù. GNUÀÇ gcc  Åø¼ÂÀº ELF¿Ü¿¡  ´Ù¸¥
  ÇüÅÂÀÇ  ¶óÀ̺귯¸®µµ ´Ù·ê¼ö Àִµ¥ ¾ÆÁ÷µµ ´ëºÎºÐÀÇ  ¸®´ª½º ¹èÆ÷ÆÇÀº
  ÀÌ¹Ì Åð¹°ÀÌµÈ  a.outÇüÀÇ Æ÷¸ËÀ» ´Ù·ç°í´Â ÀÖ´Ù, ÇÏÁö¸¸  ÀÌ°ÍÀº ÀÌÃ¥ÀÇ
  ¹üÀ§¸¦ ¹þ ¾î³­ ¾ê±âÀÌ´Ù.

  ¾î¶² »ç¶÷µéÀº µ¿Àû ¸µÅ© ¶óÀ̺귯¸®(DLL)¶õ   ¿ë¾î¸¦ »ç¿ëÇÏ¿© °øÀ¯¶óÀ̺ê
  ·¯¸®¸¦ ĪÇϱ⵵ ÇÏ°í,  ¶§·Ð Á¤ÀûÀÌ°Ç °øÀ¯°Ç  µ¿Àû ¶óÀ̺귯¸®·Î »ç¿ëµÉ
  ¶§ DLLÀ̶ó ĪÇϱ⵵ ÇÏ°í ¶Ç, ¶§·Î´Â À§ÀÇ µÎ Á¶°ÇÀ» ¸ðµÎ ¸¸Á·ÇÒ ¶§
  DLLÀ̶õ ¿ë¾î¸¦ ¾²±âµµ Çϳª ÀÌ°ÍÀº º°·Î  Áß¿äÇÑ ¾ê±â°¡ ¾Æ´Ï´Ù. À̹®¼­´Â
  ´ç½ÅÀÌ ¾î ¶² Àǹ̸¦  ¼±ÅÃÇÏ°Ç°£¿¡ ¸®´ª½º¿¡¼­ÀÇ DLLÀ» ´Ù·ïÁÙ °ÍÀÌ´Ù.

  ¸¸¾à ¿©·¯  ½Ã½ºÅÛ¿¡ Æ÷Æõɼö  ÀÖ´Â  ÇÁ·Î±×·¥À» °³¹ßÇÏ·Á  ÇÑ´Ù¸é LINUX
  ToolÀ» ¹Ù·Î »ç¿ëÇÏ´Â °Í º¸´Ù´Â GNU LibtoolÀÇ »ç¿ëÀ» °í·ÁÇØ º¸±æ
  ¹Ù¶õ´Ù.  GNU LibtoolÀº °øÀ¯ ¶óÀ̺귯¸®ÀÇ »ç¿ë(»ý¼º°ú ¼³Ä¡µî)ÀÇ
  º¹À⼺À»  ÀÏ°üµÇ°í À̽ÄÀûÀÎ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇؼ­ Á¦°ÅÇØÁÖ´Â ÀüÇüÀûÀÎ
  ¶óÀ̺귯¸® Áö¿ø ½ºÅ©¸³ Æ®ÀÌ´Ù. ¸®´ª½º¿¡¼­  GNU LibtoolÀº ToolµéÁß¿¡¼­
  ÃÖ»óÀ§¿¡ ±¸ÇöµÇ¾î ÀÖÀ¸¸ç ±× »ç¿ë°ü·Êµµ ÀÌ  ÇÏ¿ìÅõ ¹®¼­¿¡ ±â¼úµÇ¾îÀÖ´Ù.
  DL  ¶óÀ̺귯¸®ÀÇ  À̽İ¡´É ÇÑ ÀÎÅÍÆäÀ̽º  ±¸ÇöÀ» À§Çؼ­´Â ¿©·¯°¡Áö
  À̽ļº  ±¸ÇöÀåÄ¡°¡ ÀÖÀ¸¸ç ±×  Áß GNU Libtool Àº "Libltdl" ÀÌ Æ÷ÇԵǾî
  ÀÖ´Ù. ´Ù¸¥ ¼±ÅÃÀ¸·Î´Â glib ¶óÀ̺귯¸® (glibc¿Í È¥µ¿ÇÏÁö¸»°Í)ÀÇ µ¿Àû
  ¸ðµâ ÀûÀçÀÇ  À̽ļºÁö¿ø±â´ÉÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.  ±×°ÍÀ» »ç¿ëÇÏ·Á ÇÑ´Ù¸é
  ÀÌ  ¹®¼­¸»°í [10]developer.gnome.org/doc/API/glib/glib-dynamic-
  loading-of-modules.html <http://developer.gnome.org/doc/API/glib/glib-
  dynamic-loading-of-modules.html> ¿¡¼­ º¸±æ ¹Ù¶õ´Ù. ´Ù½Ã  Çѹø ¸»
  Çϰǵ¥ ¸®´ª½º¿¡¼­ ¶óÀ̺귯¸®ÀÇ »ç¿ë¿¡ °üÇÑ Á¦¹Ý  ±â´ÉµéÀÇ ±¸ÇöÀÌ ÀÌ
  ¹®¼­ ¿¡¼­ ±â¼úµÉ °ÍÀÌ¸ç ¸®´ª½º¿ë Äڵ带 °³¹ßÁßÀ̰ųª µð¹ö±ë ÁßÀ̶ó¸é
  À̹®¼­ÀÇ ³»¿ëÀÌ À¯¿ëÇÒ°ÍÀÌ´Ù.

  ÀÌ ÇÏ¿ìÅõ ¹®¼­ÀÇ ¸ÞÀÎÁÖ¼Ò´Â [11]www.dwheeler.com/program-library
  <http://www.dwheeler.com/program-library> À̸ç
  LDP([12]http://www.linuxdoc.org <http://www.linuxdoc.org>)¿¡
  Á¦°øµÈ´Ù. ÀúÀÛ±ÇÀÚ´Â  David  A.  WheelerÀ̸ç GPLÀÇ ¶óÀ̼¾½º¸¦ µû¸¥´Ù.

  2.  Á¤Àû ¶óÀ̺귯¸®

  Á¤Àû ¶óÀ̺귯¸®´Â ´ÜÁö Åë»óÀÇ ¿ÀºêÁ§Æ® È­ÀÏÀ» ¸ðÀº°ÍÀÌ´Ù. Åë»óÀûÀ¸·Î
  Á¤ Àû ¶óÀ̺귯¸®´Â .a¶ó´Â Á¢¹Ì¾î·Î ³¡³­´Ù.  ÀÌ  ¿ÀºêÁ§Æ® ÁýÇÕÀº
  ar(archiver) ÇÁ·Î±×·¥¿¡ ÀÇÇؼ­ »ý¼ºµÈ´Ù. Á¤Àû ¶óÀ̺귯¸®´Â °øÀ¯
  ¶óÀ̺귯¸®°¡ °¡Áö´Â Àå Á¡µé ¶§¹®¿¡ ÀÌÁ¦´Â ¿¾³¯Ã³·³ ±×·¸°Ô ¸¹ÀÌ
  »ç¿ëµÇ¾î ÁöÁö´Â ¾Ê´Â´Ù.  ±×·¸Áö¸¸ ¾ÆÁ÷µµ »ç¿ëµÇ¾î Áö°í ÀÖ°í ¿ª»çÀûÀ¸·Î
  °¡Àå¸ÕÀú Á¸ÀçÇß°í ¼³¸íÀÌ °£´ÜÇÏ´Ù.  Á¤Àû ¶óÀ̺귯¸®´Â ÀçÄÄÆÄÀϾøÀÌ
  ÇÁ·Î±×·¥¿¡ ¸µÅ©µÉ¼ö Àֱ⠶§¹®¿¡ ÀçÄÄÆÄÀÏ ¿¡ ÇÊ¿äÇÑ ½Ã°£ÀÌ Àý¾àµÉ¼ö
  ÀÖ´Ù.  ¿äÁòÀº ÄÄÇ»ÅÍÀÇ ºü¸¥ ½ÇÇà½Ã°£¶§¹®¿¡ ÀÌ·± ÀçÄÄÆÄÀÏ¿¡  µå´Â ½Ã°£
  Àý¾àÀº ¿¾³¯Ã³·³  ±×·¸°Ô Áß¿äÇÑ ÀÌÀ¯°¡  µÉ¼ö´Â ¾øÀ» °ÍÀÌ´Ù. Á¤Àû
  ¶óÀ̺귯¸®´Â °³¹ßÀÚµéÀÌ ¼Ò½ºÄÚµåÀÇ Àç°ø¾øÀÌ  ÇÁ·Î±×·¡¸Óµé·Î ÇÏ¿©±Ý
  ¸µÅ©ÇÏ¿© »ç¿ëÇϵµ·Ï ÇÒ¶§´Â °¡²û¾¿ À¯¿ëÇÑ °ÍÀ̵ȴÙ.  (À̶§ ¶óÀ̺귯
  ¸®ÀÇ  ÆǸÅÀÚ´Â ÀÌÀÍÀÌÁö¸¸ ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ°íÀÚ  ÇÏ´Â
  ÇÁ·Î±×·¡¸Óµé¿¡°Ô ´Â À¯¿ëÇÑ°ÍÀÌ ¾Æ´Ï´Ù.) À̷лóÀ¸·Î ½ÇÇàÆÄÀÏ¿¡ ¸µÅ©µÇ´Â
  Á¤Àû ELF ¶óÀ̺귯 ¸® ÄÚµå´Â 1-5%Á¤µµ »¡¸® ¼öÇàµÇ¾îÁ®¾ßÇϳª ½ÇÁ¦¿¡
  À־´Â ´Ù¸¥ ¿©·¯°¡Áö º¹ÇÕÀûÀÎ ÀÌÀ¯·Î ÀÎÇÏ¿© ÀÌ·± ¿¹´Â Àß ¸ÂÁö ¾Ê´Â°Í
  °°´Ù.

  Á¤Àû ¶óÀ̺귯¸®¸¦ »ý¼ºÇϰųª  ±âÁ¸ÀÇ Á¤Àû ¶óÀ̺귯¸®¿¡  ºÎ°¡Àû
  ¿ÀºêÁ§Æ® ÆÄÀÏÀ» Ãß°¡ÇÒ °æ¿ì ´ÙÀ½ÀÇ ¸í·ÉÀ» »ç¿ëÇÑ´Ù.

  ar rcs my_library.a file1.o file2.o À§ÀÇ ¿¹ÀÇ ¸í·ÉÀº file1.o
  file2.o¶ó´Â ¿ÀºêÁ§Æ®  ÆÄÀÏÀ» mylibrary.a¿¡ Ãß°¡ÇÏ °Å³ª Á¸ÀçÇÏÁö
  ¾ÊÀ»°æ¿ì ÀÌ ÆÄÀÏÀ» »ý¼ºÇÑ´Ù. Á¤Àû ¶óÀ̺귯¸® »ý¼º°ú  °ü·ÃÇÑ ´õ  ÀÌ»óÀÇ
  Á¤º¸´Â ar(1)À» º¸±â ¹Ù¶õ´Ù.

  Á¤Àû ¶óÀ̺귯¸®¸¦ ´ç½ÅÀÌ ¸¸µé¾ú´Ù¸é »ç¿ëÇϱ⸦ ¿øÇÒ °ÍÀÌ´Ù. À̸¦
  »ç¿ëÇÏ ·Á¸é  ½ÇÇà ÇÁ·Î±×·¥À» »ý¼ºÇϱâ À§ÇÑ ÄÄÆÄÀÏ°ú  ¸µÅ©°úÁ¤ÀÇ ÇÑ
  ºÎºÐ¿¡ ÀÌ ÆÄ ÀÏÀ» Æ÷ÇÔ½ÃÅ°¸é µÈ´Ù. ¸¸¾à¿¡ gcc(1)À» »ç¿ëÇÏ¿© ½ÇÇàÆÄÀÏÀ»
  ¸¸µç´Ù¸é -l  ¿É ¼ÇÀ» »ç¿ëÇÏ¿© ´ç½ÅÀÌ  ¸¸µç ¶óÀ̺귯¸®¸¦ ¸í½ÃÇϸé
  µÈ´Ù. (info:gccÀ» ÂüÁ¶ÇÏ ¸é ´õ ¸¹Àº Á¤º¸¸¦ ¾òÀ»¼ö ÀÖÀ½). ¸µÄ¿ÀÎ
  ld(1)¸¦ ¹Ù·Î »ç¿ëÇÏ¿©µµ(-l,¶É´À  -L ¿É¼Ç) µÇ³ª ld(1)ÀÇ ÀÎÅÍÆäÀ̽º°¡
  ÀÚÁÖ º¯ÇϹǷΠgcc(1)À»   ¾²´Â °ÍÀÌ ´õ ³ª À» °ÍÀÌ´Ù.

  3.  °øÀ¯ ¶óÀ̺귯¸®

  °øÀ¯ ¶óÀ̺귯¸®¶õ ÇÁ·Î±×·¥ÀÌ ½ÃÀÛµÉ ¶§ ÀÌ ÇÁ·Î±×·¥¿¡ ÀÇÇؼ­ ÀûÀçµÇ´Â
  ¶ó À̺귯¸®¸¦ ¸»ÇÑ´Ù. ¾î¶² °øÀ¯ ¶óÀ̺귯¸®°¡ ¹Ù¸£°Ô ÀûÀç¾ú´Ù¸é ÀÌÈÄ¿¡
  ½ÇÇàµÇ ´Â  ¸ðµç ÇÁ·Î±×·¥µéÀº ÀÚµ¿ÀûÀ¸·Î ÀÌ »õ·Î¿î °øÀ¯ ¶óÀ̺귯¸®¸¦
  »ç¿ëÇÒ °ÍÀÌ ´Ù. ½ÇÀç¿¡ À־, ¸®´ª½º¿¡¼­ »ç¿ëµÇ´Â Á¢±Ù¹æ½ÄÀº ¾Æ·¡¿Í
  °°Àº ±â´ÉµéÀ» Çã ¿ëÇϹǷΠ´õ¿í ź·ÂÀûÀÌ¸ç ¶ÇÇÑ, ¼¼·ÃµÇ°Ô ±â´ÉÇÑ´Ù.

  * ¶óÀ̺귯¸®¸¦ °»½ÅÇϸ鼭 ÀÌ  ¶óÀ̺귯¸®ÀÇ ±¸¹öÀü Áö¿ø¿ë  ¹öÀüÀÌ
  ¾øÀ̵µ ¿©ÀüÈ÷ ±¸ ¹öÀüÀÇ ¶óÀ̺귯¸®ÀÇ »ç¿ëÀ» ¿øÇÏ´Â ÇÁ·Î±×·¥À» Áö¿øÇÒ¼ö
  ÀÖ´Ù.

  * ƯÁ¤ ÇÁ·Î±×·¥ÀÇ ¼öÇà½Ã ¶óÀ̺귯¸® ¶Ç´Â ½ÉÁö¾î ¶óÀ̺귯¸®ÀÇ
  ƯÁ¤ÇÔ¼öÀÇ ¿À¹ö¶óÀ̵ù(´ëÄ¡)ÀÌ °¡´ÉÇÏ´Ù.

  * ÀÌ ¸ðµç ±â´ÉÀ» ±âÁ¸ÀÇ ¶óÀ̺귯¸®¸¦  ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥ ½ÇÇàÁß¿¡
  °¡´ÉÇÏ ´Ù.

     °ü ·Ê
        °øÀ¯ ¶óÀ̺귯¸®°¡ ÀÌ·¯ÇÑ ±â´ÉµéÀ» Áö¿øÇϱâ À§Çؼ­´Â  »ç¿ëÀÚ°¡
        ¹Ýµå½Ã µû ¶ó¾ßÇÒ ÀÌ¿ë»óÀÇ ¸î°¡Áö °ü·Ê¿Í  °¡À̵å¶óÀÎÀÌ ÀÖ´Ù.
        ´ç½ÅÀº ÇÑ  ¶óÀ̺귯¸®¸¦ ÀÏÄ´ À̸§µéÀÇ Â÷ÀÌ Æ¯È÷  "soname"°ú
        "real name"À» ±¸º°ÇÒ¼ö  ÀÖ¾î¾ßÇÏ ¸ç, (¶ÇÇÑ À̵éÀÌ ¾î¶»°Ô
        »óÈ£ÀÛ¿ë Çϴ°¡µµ ¾Ë¾Æ¾ß ÇÑ´Ù) ¶ÇÇÑ,  ¶óÀ̺귯¸®°¡ ÆÄÀÏ
        ½Ã½ºÅÛ»óÀÇ ¾îµð¿¡ À§Ä¡ÇØ¾ß Çϴ°¡µµ ¾Ë¾Æ¾ß ÇÑ´Ù.

     °øÀ¯ ¶óÀ̺귯¸® À̸§µé
        ¸ðµç °øÀ¯ ¶óÀ̺귯¸®´Â "soname"ÀÌ¶ó  ºÒ¸®´Â Ưº°ÇÑ À̸§À»
        °¡Áö°í ÀÖ´Ù.  "soname"Àº Á¢µÎ¾î "lib", ¶óÀ̺귯¸® À̸§,
        ".so"¶ó´Â ¹®±¸, ±× ´ÙÀ½ ¸¶Ä§Ç¥¿Í ÀÎÅÍÆäÀ̽º º¯°æ½Ã Áõ°¡µÇ´Â ¹öÀü
        ³Ñ¹ö·Î  ±¸¼ºµÈ´Ù. ( ¿¹¿Ü·Î °¡Àå  Àú¼öÁØÀÇ C¶óÀ̺귯¸®µéÀº
        "lib"·Î ½ÃÀÛµÇÁö ¾Ê´Â´Ù) ¿ÏÀüÇÑ °ø½ÄÀû "soname"¿¡´Â ¶óÀÌ
        ºê·¯¸®°¡ ¼ÓÇÑ µð·ºÅ丮¸íÀÌ ¾ÕºÎºÐ¿¡ µé¾î°£´Ù. ¿î¿ëÁßÀÎ
        ½Ã½ºÅÛ¿¡¼­´Â  ¿ÏÀü ÇÑ °ø½ÄÀû "soname" À̶õ °øÀ¯¶óÀ̺귯¸®ÀÇ
        ½ÇÁ¦ À̸§("real name")¿¡  ´ëÇÑ ½Éº¼¸¯ ¸µÅ©(½ÇÁ¦ Äڵ带 ´ã°íÀÖ´Â
        ÆÄÀÏÀÌ ¾Æ´Ñ)°¡ µÉ °ÍÀÌ´Ù.

        ¸ðµç °øÀ¯ ¶óÀ̺귯¸®´Â ½ÇÁ¦ ¶óÀ̺귯¸® Äڵ尡 ÀúÀåµÇ¾î ÀÖ´Â
        ÆÄÀÏÀÇ ÆÄÀÏ ¸íÀÎ "real name"À» ¶ÇÇÑ °¡Áø´Ù. ½ÇÁ¦ ÆÄÀϸíÀº
        "soname"¿¡ ¸¶Ä§Ç¥¿Í ¸¶ÀÌ³Ê ¹öÀü ³Ñ¹ö, ¸¶Ä§Ç¥ ±×¸®°í ¸±¸®Áî
        ³Ñ¹ö¸¦ ´õÇÑ  °ÍÀÌ´Ù. ¸±¸®Áî ³Ñ¹ö´Â ¼±Åûç Ç×ÀÌ´Ù. ¸¶ÀÌ³Ê ³Ñ¹ö¿Í
        ¸±¸®Áî ³Ñ¹ö·Î Á¤È®È÷ ¾î¶² ¹öÀüÀÇ ¶óÀ̺귯¸®°¡  ¼³Ä¡ µÇ¾î ÀÖ´ÂÁö
        ¾Ë°Ô ÇÔÀ¸·Î½á ½Ã½ºÅÛ ±¸¼ºÀ» Á¶ÀýÇÒ¼ö ÀÖ´Ù. ÀÌ ¹øÈ£µéÀº ¶óÀ̺ê
        ·¯¸®¸¦ ±â¼úÇϱâÀ§ÇÑ ¹®¼­È­½Ã¿¡ »ç¿ëµÈ ¹øÈ£¿Í ¸ÂÁö ¾ÊÀ»¼öµµ
        ÀÖÀ½¿¡ À¯ÀÇÇÏ ¶ó. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ¶óÀ̺귯¸®ÀÇ ¹®¼­È­°¡ ´õ
        ¿ëÀÌÇØÁø´Ù.

        ºÎ°¡ÀûÀ¸·Î ÄÄÆÄÀÏ·¯°¡ ¶óÀ̺귯¸®¸¦ ¿ä±¸ÇÒ ¶§ »ç¿ëÇÏ´Â À̸§ÀÌ
        Çϳª ´õ Á¸ ÀçÇÑ´Ù.(³ª´Â À̸¦ "linker name"À̶ó ÀÏÄÃÀ» °ÍÀÌ´Ù.)
        ¿©±â¿¡´Â ¾î¶°ÇÑ ¹öÀü³Ñ ¹öµµ Æ÷ÇÔµÇÁö ¾Ê´Â "soname"ÀÌ ÇØ´çµÈ´Ù.
        °øÀ¯ ¶óÀ̺귯¸®¸¦ °ü¸®ÇÏ´Â ÇÙ½ÉÀº ÀÌ·¯ÇÑ À̸§µéÀ» Àß ºÐº°ÇÏ´Â
        °ÍÀÌ´Ù. ÇÁ ·Î±×·¥¿¡¼­ ÇÊ¿äÇÑ °øÀ¯ ¶óÀ̺귯¸®¸¦ ³»ºÎÀûÀ¸·Î
        Ç¥ÇöÇÒ¶§´Â ±× ¶óÀ̺귯¸® ÀÇ "soname"À» ½á¾ßÇÑ´Ù. ¹Ý´ë·Î ¸¸¾à¿¡
        ´ç½ÅÀÌ  °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µé¾ú´Ù ¸é ÀÚ¼¼ÇÑ ¹öÀü Á¤º¸¸¦ Æ÷ÇÔÇÑ
        ½ÇÁ¦ ÆÄÀϸíÀ» ÁÖ¾î¾ß ÇÑ´Ù. ´ç½ÅÀÌ »õ·Î¿î  ¹ö ÀüÀÇ ¶óÀ̺귯¸®¸¦
        ¼³Ä¡ÇÒ¶§´Â ¸î °³ÀÇ Á¤ÇØÁø µð·ºÅ丮µéÁßÀÇ ÇÑ°÷¿¡ ¼³Ä¡ÇÑ µÚ¿¡
        ldconfig¶ó´Â ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¿©¾ß ÇÑ´Ù. ldconfig´Â µð·ºÅ丮¿¡
        Á¸ÀçÇÏ ´Â ÆÄÀϵéÀ» Á¡°ËÇÑ µÚ  ½ÇÁ¦ ÆÄÀϸíÀÇ ½Éº¼¸¯  ¸µÅ©·Î½á
        sonameÀ» »ý¼ºÇÏ¸ç µ¿½Ã¿¡ ij½¬ ÆÄÀÏÀÎ /etc/ld.so.cache¸¦
        ¼ÂÆÃÇÑ´Ù.

        ldconfig´Â linker nameÀ» ¼ÂÆÃÇÏÁö ¾Ê´Â´Ù.  ÀÌ°ÍÀº º¸Åë
        ¶óÀ̺귯¸®ÀÇ ¼³Ä¡ ½Ã¿¡ ¼ÂÆÃÀ» Çϴµ¥, °£´ÜÇÏ°Ô °¡Àå  ÃÖ±ÙÀÇ
        sonameÀ̳ª real name¿¡ ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¸é µÈ´Ù. ´ëºÎºÐÀÇ °æ¿ì
        ¶óÀ̺귯¸®¸¦ °»½ÅÇÏ°í ÀÚµ¿ÀûÀ¸·Î ¸µÅ©½Ã ¿¡ »ç¿ëÇϱ⸦
        ¿øÇÒ°ÍÀ̹ǷΠsoname¿¡ ½Éº¼¸¯ ¸µÅ©Çϱ⸦ ±ÇÀåÇÑ´Ù. H. J. Lu ¿¡°Ô
        ldconfig°¡ ¿Ö ÀÚµ¿À¸·Î linker nameÀ» ¼ÂÆÃÇÏÁö ¾Ê´À³Ä°í
        ¹°¾ú´õ´Ï ±× ÀÇ ¼³¸íÀº °¡Àå ÃÖ±ÙÀÇ  ¶óÀ̺귯¸®·Î ¸µÅ©½ÃÅ°°í
        ½ÍÀ»¶§°¡  ÀÖÀ»°ÍÀÌ¸ç ¶ÇÇÑ ÀÌÀü ¹öÀüÀÇ ¶óÀ̺귯¸®¸¦ °³¹ßÇϰųªÇÒ
        ¶§ ±×°ÍÀ»  ¸µÅ©ÇÏ·Á ÇÒ ¶§°¡ ÀÖÀ¸¹Ç ·Î ldconfig´Â ¿©·¯ºÐÀÌ ¾î¶²
        ¶óÀ̺귯¸®¿Í  ¸µÅ©ÇÏ°í ½ÍÀºÁö °¡Á¤ÇÏÁö  ¾Ê´Â °ÍÀÌ¸ç ±×·¡¼­
        ¼³Ä¡ÀÚ´Â ¾î¶² ¶óÀ̺귯¸®°¡  ¸µÅ©µÉ°ÍÀÎÁö¸¦ ¸í½ÃÇØ¾ß ÇÏ´Â°Í À̶ó
        Çß´Ù.

        ÀÌ»óÀÇ ¾ê±â¸¦ Á¾ÇÕÇÑ ¿¹¸¦ µé¾îº¸¸é ldconfig°¡
        /usr/lib/libreadline.so.3.0°ú °°Àº real nameÀÇ ½Éº¼¸¯ ¸µÅ©·Î
        ¼ÂÆÃÇÑ  /usr/lib/libreadline.so.3  ÇüÅÂÀÇ ¿Ï ÀüÇÑ °ø½ÄÀû
        sonameÀÌ ÀÖÀ»°ÍÀÌ¸ç  /usr/lib/libreadline.so.3¿¡  ½Éº¼¸¯ ¸µÅ©µÈ
        link nameÀ¸·Î½á  /usr/lib/libreadline.so°¡ ¶ÇÇÑ ÀÖÀ» °ÍÀÌ´Ù.

     ÆÄÀÏ ½Ã½ºÅÛ»óÀÇ À§Ä¡
        °øÀ¯ ¶óÀ̺귯¸®´Â ÆÄÀÏ ½Ã½ºÅÛ »óÀÇ Æ¯Á¤À§Ä¡¿¡ Á¸ÀçÇؾßÇÑ´Ù. ¿ÀÇÂ
        ¼Ò½º ¼Ò ÇÁÆ®¿þ¾îµéÀº GNUÀÇ Ç¥ÁØÀ» µû¸£´Â °æÇâÀÌ ÀÖÀ¸¸ç  ´õ
        ÀÚ¼¼ÇÑ ³»¿ëÀº info¹® ¼­ÀÇ [13]info:standards#Directory_Variables
        ºÎºÐÀ» »ìÆ캸±æ ¹Ù¶õ´Ù. GNU Ç¥ ÁØÀº  ¼Ò½ºÄÚµåÀÇ ¹èÆ÷½Ã¿¡  ¸ðµç
        ¶óÀ̺귯¸®¸¦ /usr/local/lib¿¡  ¼³Ä¡ÇÏ±æ ±Ç
        ÀåÇÑ´Ù(/usr/local/bin¿¡´Â ¸í·ÉµéÀÌ ¸ðÀÓ). GNUÇ¥ÁØÀº  ¶ÇÇÑ ÀÌ·¯ÇÑ
        µðÆúÆ®µé À» ¹«½ÃÇϰųª ¼³Ä¡·çƾÀ» È£ÃâÇÏ´Â ÀýÂ÷ µî¿¡ °üÇÑ
        °ü·ÊµéÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù.  ÆÄÀϽýºÅÛ °èÃþÀû ±¸Á¶Ç¥ÁØ(FHS:File
        system Hierarchy Standard)  ¶ÇÇÑ ¼Ò ½º¹èÆ÷½Ã¿¡ ¾î¶² À§Ä¡¿¡
        ¹«¾ùÀ» µÎ¾î¾ß ÇÏ´ÂÁö¿¡  ´ëÇØ  ³íÇÏ°í ÀÖ´Ù.( www.pathname.com/fhs
        <http://www.pathname.com/fhs> ¸¦ ÂüÁ¶Ç챉  ¹Ù¶÷).  FHS¿¡¼­´Â
        ´ëºÎºÐÀÇ  ¶óÀ̺귯¸®¸¦ /usr/lib¿¡ ¼³Ä¡ÇÒ °ÍÀ»  ±ÇÀåÇÑ´Ù, ±×·¯³ª
        ½Ã½ºÅÛ ½ÃÀ۽à ÇÊ¿äÇÑ ¶óÀ̺귯¸®´Â /lib¿¡ ¶ÇÇÑ, ºñ½Ã½ºÅÛ
        ¶óÀ̺귯¸®´Â /usr/local/lib¿¡ ¼³Ä¡µÇ¾î¾ß ÇÑ´Ù.

        À§ÀÇ µÎ Ç¥ÁØÀÌ ¼­·Î ¸ð¼øµÇ´Â  µí º¸ÀÌÁö¸¸ ½ÇÁ¦·Î ±×·¸Áö´Â  ¾Ê´Ù.
        GNUÀÇ Ç¥ÁØÀº ¼Ò½ºÄÚµåÀÇ °³¹ßÀÚ¸¦ À§ÇÑ µðÆúÆ®°ªÀ»  Á¦¾ÈÇÏ´Â
        °ÍÀÌ°í, FHS´Â ¼Ò½º ÀÇ ¹èÆ÷ÀÚ(½Ã½ºÅÛÀÇ µðÆúÆ® ¼Ò½ºÄڵ带
        ¼±ÅÃÀûÀ¸·Î  ±× ½Ã½ºÅÛÀÇ ÆÐÅ°Áö °ü¸® µµ±¸¸¦  ÅëÇؼ­ ´ëÄ¡½ÃÅ°´Â)¸¦
        À§ÇÑ µðÆúÆ®°ªÀ» Á¦¾ÈÇÏ´Â °ÍÀÌ´Ù. ½ÇÁ¦·Î ÀÌ°Í Àº »ó´çÈ÷ È¿°úÀûÀÎ
        °ÍÀÌ´Ù, Áï, ´ç½ÅÀÌ ´Ù¿î·ÎµåÇÑ  °¡Àå ÃÖ½ÅÀÇ(¹ö±×ÀÇ °¡´É ¼ºÀÌ
        ÀÖ´Â) ¼Ò½ºÄÚµå´Â ÀÚµ¿ÀûÀ¸·Î ·ÎÄà µð·ºÅ丮ÀÎ /usr/local¿¡
        ¼³Ä¡µÉ°ÍÀÌ¸ç ±×  Äڵ尡 ÀÌÁ¦  ¿Ïº®ÇØÁö¸é ÆÐÅ°Áö ¸Å´ÏÀú¸¦
        ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛ¿¡  ¼³Ä¡µÈ µð ÆúÆ®(¶óÀ̺귯¸®)¸¦ ´ëÄ¡ÇÏ°í
        ¹èÆ÷½ÃÀÇ Ç¥ÁØ  µð·ºÅ丮·Î ¼³Ä¡ÇÒ¼ö ÀÖ´Â  °ÍÀÌ ´Ù. ¶óÀ̺귯¸®¸¦
        ÅëÇؼ­¸¸  È£Ãâ°¡´ÉÇÑ ÇÁ·Î±×·¥µéÀ» ¶óÀ̺귯¸®°¡  È£ÃâÇÏ´Â
        °æ¿ì¿¡´Â ¹Ýµå½Ã ±× ÇÁ·Î±×·¥µéÀ» usr/local/libexec(¹èÆ÷º»¿¡¼­´Â
        /usr/libexec ÀÓ)¿¡ µÎ¾î¾ßÇÔÀ» ¸í½ÉÇ϶ó. ÇÑ°¡Áö È¥µ¿Àº ·¹µåÇÞÀÇ
        ¹èÆ÷º»µéÀº ¶óÀ̺귯¸®¸¦ ã´Â °úÁ¤¿¡¼­  /usr/local µð·ºÅ丮¸¦
        Á¦¿Ü ½ÃŲ´Ù´Â °ÍÀε¥,  ¾Æ·¡¿¡¼­  ³íÀÇ µÉ /etc/so.confºÎºÐÀ»
        Âü°íÇ챾  ¹Ù¶õ´Ù. ±×¿Ü¿¡ ¶Ç´Ù¸¥ ÇϳªÀÇ  Ç¥ÁØ  ¶óÀÌºê ·¯¸®
        µð·ºÅ丮°¡ Àִµ¥  X-À©µµ¿ì  ½Ã½ºÅÛÀÌ »ç¿ëÇÏ´Â /usr/X11R6/libÀÌ
        ±× °ÍÀÌ´Ù.  /lib/security µð·ºÅ丮´Â PAM¸ðµâ¿¡¼­ »ç¿ëµÊ¿¡
        À¯ÀÇÇ϶ó. ÀÌ µð·º Å丮´Â Åë»ó µ¿Àû ¶óÀ̺귯¸®·Î½á ÀûÀçµÈ´Ù.(¿ª½Ã
        µÞºÎºÐ¿¡¼­ ³íÀǵɰÍÀÓ)

     ¶óÀ̺귯¸®´Â ¾î¶»°Ô »ç¿ëµÇ´Â°¡
        ¸ðµç ¸®´ª½º ½Ã½ºÅÛÀÌ Æ÷ÇԵǴ GNUÀÇ glibc-±â¹ÝÀÇ ½Ã½ºÅÛÀº ELF
        ÀÌÁø ½Ç Çà ÇÁ·Î±×·¥ÀÇ ½ÃÀ۽ÿ¡ ÀÚµ¿ÀûÀ¸·Î  ÇÁ·Î±×·¥  ·Î´õ¸¦
        ÀûÀçÇÏ°í ½ÇÇà½ÃŲ´Ù.  ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ ÀÌ ·Î´õ´Â /lib/ld-
        linux.so.X(X´Â ¹öÀü ³Ñ¹öÀÓ)À̶ó ºÒ¸®¿ö Áö¸ç ÇÁ·Î±×·¥¿¡¼­
        »ç¿ëµÇ´Â ¸ðµç °øÀ¯ ¶óÀ̺귯¸®¸¦ Â÷·Ê´ë·Î ã¾Æ¼­ ÀûÀç½Ã Ų´Ù.

        Ž»öµÇ¾îÁú µð·ºÅ丮ÀÇ ¸ñÂ÷´Â /etc/ld.so.conf¿¡ µé¾î ÀÖ´Ù.
        ·¹µåÇÞ¿¡ ±â¹ÝÇÑ ¹èÆ÷º»¿¡´Â ÀϹÝÀûÀ¸·Î /usr/local/lib°¡
        /etc/ld.so.confÆÄÀÏ¿¡  µé¾î ÀÖÁö¾ÊÀºµ¥ ÀúÀÚ°¡ »ý°¢Çϱâ·Î  ÀÌ°ÍÀº
        ÀÏÁ¾ÀÇ  ¹ö±×°¡ ¾Æ´Ñ°¡  »ý°¢ÇÑ´Ù. ·¹µåÇÞÀÇ  °æ¿ì /usr/local/libÀ»
        /etc/ld.so.conf¿¡ ÷°¡ÇÏ´Â °ÍÀº ¸¹Àº ÇÁ·Î±×·¥µéÀ»  ¼öÇà½ÃÅ°
        ±âÀ§ÇØ ÈçÈ÷ ÀÖ´Â ¼öÁ¤ÀÛ¾÷ÀÌ´Ù.

        ¸¸¾à ¶óÀ̺귯¸®³»ÀÇ Æ¯Á¤ÇÑ ÇÔ¼ö¸¸À» ´ëÄ¡½ÃÅ°°í ³ª¸ÓÁö´Â ±×´ë·Î
        À¯ÁöÇÏ·Á ÇÒ¶§´Â ´ëÄ¡½Ãų ¶óÀ̺귯¸®(.oÆÄÀϵé)µéÀ»
        /etc/ld.so.preload ÆÄÀÏ¿¡  ¸í½ÃÇÏ¸é µÇ´Âµ¥ ÀÌ·¯ÇÑ ÇÁ¸®·Îµå
        ¶óÀ̺귯¸®µéÀº Ç¥ÁØÀûÀÎ  ÇÔ¼öº¸´Ù ¿ì¼±±ÇÀ» °¡Áö°Ô µÈ´Ù. ÀÌ·¯ÇÑ
        ÇÁ¸®·Îµù ÆÄÀϵéÀº º¸Åë   ÀÀ±Þ ÆÐÄ¡º»¿¡¼­ »ç¿ëµÇ´Âµ¥  Á¤»óÀû
        ¹èÆ÷º»¿¡´Â Àß Æ÷ÇÔµÇÁö ¾Ê´Â´Ù.

        ¸Å ÇÁ·Î±×·¥ÀÇ ½ÃÀ۽ø¶´Ù ÀÌ ¸ðµç µð·ºÅ丮µéÀ»  Ž»öÇÏ´Â °ÍÀº
        Àü¹ÝÀûÀ¸·Î ¸Å¿ì  ºñÈ¿À²ÀûÀ̱⠶§¹®¿¡   ½ÇÁ¦ÀûÀ¸·Î´Â ij½¬°¡
        »ç¿ëµÈ´Ù.  ldconfig ÇÁ·Î ±×·¥Àº Åë»ó /etc/ld.so.conf¸¦ Àо
        ¸ðµç  ÇÊ¿äÇÑ µ¿Àû ¸µÅ© µð·ºÅ丮µé·ÎºÎ ÅÍ Àû´çÇÑ ½Éº¼¸¯ ¸µÅ©¸¦
        »ý¼ºÇÑ´Ù.(±×·¡¼­  À̸§  »ç¿ëÀÇ  ±ÔÄ¢À» Àß µû¶ó¾ß ÇÑ´Ù) ±×
        ´ÙÀ½À¸·Î /etc/ld.so.cache ¿¡  ÀÌ  ³»¿ëµéÀ» ±â·ÏÇϸç ÀÌ ´ÙÀ½ ºÎÅÍ
        ´Â ÇÁ·Î±×·¥µéÀÌ ÀÌ ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô Çؼ­
        ¶óÀ̺귯¸®ÀÇ ¾×¼¼ ½º  ¼Óµµ´Â »ó´çÈ÷  Çâ»óµÇ´Â °ÍÀÌ´Ù.  À§ÀÇ
        ³»¿ëÀÌ   ÇÔÃàÇÏ´Â  ¹Ù´Â DLLÀÌ Ãß°¡  ¶Ç´Â  Á¦°ÅµÉ  ¶§,   ¶Ç´Â
        DLLÀÇ µð·ºÅ丮°¡    º¯°æµÉ¶§´Â ¹Ýµå½Ã ldconfig°¡ ½ÇÇàµÇ¾î¾ß
        ÇÑ´Ù´Â °ÍÀ̸ç, ±×·¡¼­ ÆÐÅ°Áö ¸Å´ÏÀú°¡ ¶óÀ̺귯¸®¸¦ ¼³Ä¡ÇÒ ¶§, ÀÌ
        °úÁ¤Àº Åë»óÀ¸·Î ¼öÇàµÇ´Â ÀýÂ÷ÀÎ  °ÍÀÌ´Ù. ±×·¡¼­ ÇÁ·Î±×·¥ ½Ã ÀÛ½Ã
        µ¿Àû ·Î´õ´Â ½ÇÁ¦·Î´Â /etc/ld.so.cache¸¦  »ç¿ëÇÏ¿© ÇÊ¿äÇÑ
        ¶óÀ̺귯¸®¸¦ ÀûÀçÇÏ´Â °ÍÀÌ´Ù.

     ȯ°æ º¯¼ö
        ¿©·¯ Á¾·ùÀÇ È¯°æº¯¼öµéÀÌ À§ÀÇ ÀÌ·¯ÇÑ ÇÁ·Î±×·¥  ½ÃÀÛ½ÃÀÇ
        ÀûÀç°úÁ¤µéÀ» Á¶ ÀýÇÒ¼ö ÀÖÀ¸¸ç ¶ÇÇÑ ÀÌ °úÁ¤µéÀ» ´ëÄ¡Çϵµ·Ï ÇÏ´Â
        ȯ°æº¯¼öµéµµ ÀÖ´Ù. ¿¹¸¦ µé ¸é ÀÌ ¼öÇà°úÁ¤Áß, ¾î¶² ¶óÀ̺귯¸®¸¦
        ÀáÁ¤ÀûÀ¸·Î ±³Ã¼ÇÏ¿© ¼öÇàÇÒ¼öµµ ÀÖ´Ù.  ¸®´ª½º¿¡¼­  ȯ°æº¯¼ö
        LD_LIBRARY_PATH´Â ÄÝ·ÐÀ¸·Î ºÐ¸®µÇ¾î  Àִ ǥÁØ ÀûÀÎ
        ¶óÀ̺귯¸®¼Â¿¡ ¾Õ¼­¼­ °¡Àå ¸ÕÀú Ž»öµÇ¾îÁú  ¶óÀ̺귯¸®
        µð·ºÅ丮ÁýÇÕ ÀÌ´Ù. ÀÌ·¸°Ô ÇÏ¸é  »õ·Î¿î ¶óÀ̺귯¸®¸¦ µð¹ö±ëÇϰųª
        ºñÇ¥ÁØÀûÀÎ ¶óÀ̺귯¸® ¸¦ ¾î¶²  Ư¼öÇÑ ¿ëµµ·Î »ç¿ëÇÒ ¶§¿¡
        À¯¿ëÇÒ°ÍÀÌ´Ù.  ȯ°æº¯¼ö LD_PRELOAD ´Â /etc/ld.so. preloadó·³
        Ç¥ÁØÀûÀÎ ÇÔ¼öµé¿¡ ¿À¹ö¶óÀ̵åµÉ ÇÔ¼öµéÀÌ ÀÖ´Â ¿À ºêÁ§Æ® ÆÄÀÏÀÇ
        ¸®½ºÆ®¸¦ ³ªÅ¸³½´Ù. À§ÀÇ ÀÌ·¯ÇÑ ±â´ÉµéÀº ·Î´õ /lib/ld-linux.so °¡
        ±¸ÇöÇÑ´Ù.

        ÀûÀç°úÁ¤À» Á¦¾îÇÏ´Â ´Ù¸¥  Á¾·ùÀÇ È¯°æº¯¼öµéÀÌ  ÀÖ´Ù; À̸§ÀÌ
        LD_ ¶Ç´Â RTLD_·Î ½ÃÀÛÇÑ´Ù. ÀÌ·¯ÇÑ º¯¼öµéÀÇ ´ëºÎºÐÀº ÀûÀç°úÁ¤ÀÇ
        Àú¼öÁØ µð¹ö±ëÀ̳ª Ư¼ö±â´ÉÀÇ ±¸ÇöÀ» À§Çؼ­ »ç¿ëµÇ¾î Áø´Ù. À̵é
        ´ëºÎºÐÀÌ Àß ¹®¼­È­µÇÁö  ¾Ê¾Ò ±â ¶§¹®¿¡ ÀÚ¼¼È÷ ¾Ë·Á¸é ¼Ò½ºÄڵ带
        Àо°¡´Â °ÍÀÌ ÃÖ¼±ÀÇ ¹æµµÀÏ °ÍÀÌ´Ù.  ÀÌ·¸°Ô µ¿Àû¸µÅ©
        ¶óÀ̺귯¸®¿¡ ´ëÇÑ Á¦¾î±ÇÀ» »ç¿ëÀÚ¿¡°Ô  Çã¶ôÇÏ´Â °ÍÀº Ư º°ÇÑ
        Á¶Ä¡°¡ ÃëÇØÁöÁö ¾Ê´Â´Ù¸é setuid/setgid µîÀÇ ÇÁ·Î±×·¥¿¡ À־´Â
        ´ë´Ü È÷ À§ÇèÇÑ °ÍÀÌ´Ù.  ±×·¡¼­ GNU·Î´õÀÇ °æ¿ì  ¸¸¾à¿¡ ÇÁ·Î±×·¥ÀÌ
        setuid  ¶Ç´Â setgidÀÏ °æ¿ì¿¡´Â ÀÌ·¯ÇÑ È¯°æº¯¼öµé(¶Ç´Â ÀÌ¿Í
        À¯»çÇÑ  ´Ù¸¥ º¯¼öµé)Àº ¹«½Ã µÇ°Å³ª ¾Æ´Ï¸é ÇÒ¼öÀÖ´Â ±â´ÉÀÌ ´ë´ÜÈ÷
        Á¦ÇѵȴÙ.  ·Î´õ´Â  ÇÁ·Î±×·¥ÀÌ setuid ¶Ç´Â setgidÀÎÁö
        Á¡°ËÇϱâÀ§ÇØ ÇÁ·Î±×·¥ÀÇ  credential¸¦  üũÇÑ´Ù;  uid¿Í
        euid(effective user ID)°¡ ´Ù¸£°Å³ª  gid¿Í egid(effective group
        ID)°¡ ´Ù¸¥°æ ¿ì¿¡ ·Î´õ´Â ÀÌ ÇÁ·Î±×·¥À» setuid/setgid(¶Ç´Â
        »ó¼Ó¹ÞÀº°Í)ÀÌ¶ó  °¡Á¤ÇÏ°í  ¸µ Å©°úÁ¤ÀÇ Á¦¾î±â´ÉÀ» ´ë´ÜÈ÷
        Á¦ÇÑÇÏ°Ô µÈ´Ù. GNUÀÇ glibc¶óÀ̺귯¸®ÀÇ ¼Ò½ºÄÚ µå¸¦ Àо¸é
        ÀÌ·¯ÇÑ ³»¿ëÀ»  Àß º¼¼ö ÀÖÀ»°ÍÀ̸ç ƯÈ÷   elf/rtld.c, sysdeps/
        generic/dl-sysdep.c¸¦ º¸±æ  ¹Ù¶õ´Ù. ÀÌ°ÍÀÌ ¶æÇÏ´Â  ¹Ù´Â ¸¸¾à¿¡
        ´ç½ÅÀÌ uid, gid¸¦ euid, egid¿Í °°°ÔÇÏ°í ÇÁ·Î±×·¥À»  È£ÃâÇϸé
        ÀÌ·¯ÇÑ È¯°æº¯¼öµéÀº ¿ÏÀü ÇÑ ¿µÇâ·ÂÀ» ¹ÌÄ¥¼ö ÀÖ´Ù´Â ¶æÀÌ´Ù. ´Ù¸¥
        À¯´Ð½º À¯»ç ½Ã½ºÅ۵鿡¼­´Â  ÀÌ·¯ÇÑ »óȲÀ» ´Ù¸£°Ô  ´Ù·ç±âµµ
        ÇÏÁö¸¸ °°Àº ÀÌÀ¯·Î ÀÎÇؼ­ setuid/setgid  ÇÁ·Î±×·¥ Àº ȯ°æº¯¼ö¿¡
        ÀÇÇؼ­ À߸øµÈ ¿µÇâÀ» ¹Þ¾Æ¼­´Â ¾ÊµÇ´Â °ÍÀÌ´Ù.

     °øÀ¯ ¶óÀ̺귯¸®ÀÇ »ý¼º
        °øÀ¯ ¶óÀ̺귯¸®ÀÇ   »ý¼ºÀº ½±´Ù.  ¸ÕÀú gccÀÇ
        fPICÇ÷¡±×("position inde- pendent code" °øÀ¯¶óÀ̺귯¸®·Î »ç¿ëÇÒ
        ¶§  Çʼö)¸¦ »ç¿ëÇÏ¿© ¿ÀºêÁ§Æ® ÆÄÀÏ À» »ý¼ºÇÑ´Ù. ±× ´ÙÀ½¿£ ´ÙÀ½°ú
        °°Àº ¸í·ÉÇüÅ·Π°øÀ¯ ¶óÀ̺귯¸®¸¦ »ý¼ºÇÑ´Ù.

        gcc -shared  -WI, -soname,   your_soname\
         -o   library_name file_list library_list

     µÎ °³ÀÇ ¿ÀºêÁ§ÇÁ ÆÄÀÏ(a.o, b.o)À» Æ÷ÇÔÇÏ´Â ÇϳªÀÇ  °øÀ¯
     ¶óÀ̺귯¸®¸¦ »ý¼º ÇÏ´Â ¿¹¸¦ µé¸é ¾Æ·¡¿Í °°´Ù. ÄÄÆÄÀϽÿ¡ °øÀ¯
     ¶óÀ̺귯¸®¿¡ ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï Áö¸¸ ±Ç°íµÇ´Â »çÇ×ÀÎ µð¹ö±ë
     Á¤º¸(-g¿É¼Ç)¿Í °æ°í(- wall¿É¼Ç)ÀÇ »ý¼º¿¡ À¯ÀÇ Ç϶ó, ±×¸®°í
     -c¿É¼ÇÀ¸·Î ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ  »ý¼ºµÇ¸ç ºÐ¸íÈ÷ -fPIC ¿É¼ÇÀÌ »ç ¿ëµÇ°í
     ÀÖ´Ù.

     gcc -fPIC -g -c -Wall a.c
     gcc -fPIC -g -c -Wall b.c
     gcc -shared -Wl, -soname, libmystuff.so.1 \
      -o libmystuff.so.1.0.1 a.o b.o -lc

     À̶§ ÁÖÀÇ»çÇ× ¸î°¡Áö¸¦ Àû¾îº¸¸ç ¾Æ·¡¿Í °°´Ù.

     * ÄÄÆÄÀÏ °á°ú  »ý¼ºµÉ ¶óÀ̺귯¸®¸¦  ¸í±âÇÏ´Â °ÍÀ»  ÀØÁö ¸»°ÍÀ̸ç
     -fomit, -frame, -pointer µîÀÇ  ÄÄÆÄÀÏ·¯  ¿É¼ÇÀº ÁøÂ¥ ÇÊ¿äÇÒ
     °æ¿ì¿Ü¿£  ¾²Áö ¸» °Í.  °á°úÀûÀ¸·Î »ý¼ºµÈ ¶óÀ̺귯¸®´Â µ¿ÀÛÇÏÁö¸¸
     ÀÌ·¸°Ô  ÇÏ¸é µð¹ö°Å´Â ¹«¿ëÁö¹° ÀÌ µÈ´Ù.

     * -fpic°¡ ¾Æ´Ñ -fPIC¸¦ »ç¿ëÇÏ¿© ÄÚµå·Ñ »ý¼º½ÃÄÑ¾ß ÇÑ´Ù.(-fpic¸¦ ¾µ
     °æ¿ì ºÐ ±âÁ¡¿¡¼­ Å« À§Ä¡º¯È­°¡ ÇÊ¿äÇÒ°æ¿ì ¿ÏÀüÇÑ À§Ä¡ µ¶¸³Çü Äڵ带
     ¾òÀ»¼ö ¾ø´Ù.)

     °øÀ¯ ¶óÀ̺귯¸®ÀÇ ¼³Ä¡ ¹× »ç¿ë
        ÀÌÁ¦ ¸¸¾à¿¡ ´ç½ÅÀÌ ÇϳªÀÇ °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µé¾ú´Ù¸é ±×
        ´ÙÀ½À¸·Î ¼³Ä¡ ¸¦ ¿øÇÒ °ÍÀÌ´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ¸¸µé¾îÁø °øÀ¯
        ¶óÀ̺귯¸®¸¦ Ç¥ÁØ µð·ºÅä ¸®µéÁßÀÇ Çϳª(¿¹¸¦ µé¸é /usr/lib)¿¡
        º¹»çÇÏ°í  ldconfig(8)¸¦ ½ÇÇà½ÃÅ°´Â °ÍÀÌ ´Ù.

        ¸¸¾à¿¡ (/usr/lib µð·ºÅ丮ÀÇ º¯°æ±ÇÀ» °¡ÁöÁö ¸øÇϰųª Çؼ­)
        À§Ã³·³ ÇÒ¼ö ¾ø ´Â °æ¿ì°¡ ÀÖ´Ù¸é ȯ°æº¯¼ö¸¦ »ç¿ëÇÏ¿© Á¶Á¤ÇÒ¼ö
        ÀÖ´Ù. ¸ÕÀú ¾îµò°¡¿¡ °øÀ¯ ¶ó À̺귯¸®¸¦ »ý¼ºÇؾßÇÑ´Ù. ±× ´ÙÀ½¿¡
        ÇÊ¿äÇÑ °ÍÀº real  name¿¡ °üÇÑ ½Éº¼¸¯ ¸µÅ©·Î½á  sonameÀ»
        »ý¼º(¶Ç´Â ¹öÀü¸íÀ» ÀüÇô  ¸í½ÃÇÏÁö ¾Ê´Â »ç¿ëÀÚÀ» À§ÇÑ ¹öÀü¸íÀÌ
        Æ÷ÇÔµÇÁö ¾ÊÀº sonameÀ» ½Éº¼¸¯ ¸µÅ©·Î »ý¼º)ÇÏ´Â °ÍÀε¥  À̸¦ À§
        ÇÑ °¡Àå °£´ÜÇÑ  ¹æ¹ýÀº ´ÙÀ½°ú °°ÀÌ ldconfig¸¦ ½ÇÇàÇÏ´Â °ÍÀÌ´Ù.

        ldconfig -n directory_with_shared_library

        ±× ´ÙÀ½À¸·Î Ç¥ÁØ ¶óÀ̺귯¸® º¸´Ù ¾Õ¼­¼­ Ž»öµÉ ¶óÀ̺귯¸®
        µð·ºÅ丮 ¸ñ·Ï ÀÎ LD_LIBRARY_PATH º¯¼ö¸¦ ¼³Á¤ÇÑ´Ù. ¸¸¾à¿¡
        bash¶ó¸é ´ÙÀ½°ú °°ÀÌ ÇÏ ¿© my_programÀ» Æ÷ÇÔµÇ°Ô ÇÒ¼ö ÀÖ´Ù.

        LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program

        ¸¸¾à ƯÁ¤ÇÑ ÇÔ¼ö¸¸À» ¿À¹ö¶óÀ̵å ÇÏ·Á¸é ¿À¹ö¶óÀ̵ù  ¿ÀºêÁ§Æ®
        ÆÄÀÏÀ» »ý¼º ÇÑ µÚ¿¡ LD_PRELOAD¸¦ ¼³Á¤Çؼ­ ÇÒ¼ö ÀÖ´Ù.  Áï, ÀÌ
        ÆÄÀÏ¿¡ ÀÖ´Â ÇÔ¼öµéÀÌ ±âÁ¸ ÇÔ¼ö¸¦ ¿À¹ö¶óÀ̵åÇÑ´Ù.

        ÀϹÝÀûÀ¸·Î ¶óÀ̺귯¸®¸¦  °»½ÅÇϴµ¥ ÀÖ¾î  Æ¯º°ÇÑ °í·Á»çÇ×Àº
        ¾ø´Ù. ¸¸¾à API°¡  º¯È­ÇÑ´Ù¸é ¶óÀ̺귯¸®ÀÇ Á¦ÀÛÀÚ´Â  sonameÀ»
        º¯°æÇÒ °ÍÀÌ´Ù.  °°Àº sonameÀ» °¡Áö¸é¼­ ³»¿ëÀº °»½ÅµÈ ½Å¹öÀüÀÇ
        ¶óÀ̺귯¸®¸¦ ¹«½ÃÇÏ°í ±¸¹öÀüÀÇ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ·Á¸é, ±¸¹öÀüÀÇ
        ¶óÀ̺귯¸®¸¦ ¾îµò°¡¿¡ º¹»çÇÏ°í  ±×°ÍÀÇ À̸§À» º¯°æ(À̸¦Å׸é
        ¿¾³¯À̸§.origµî)ÇÑ µÚ ÀÌ À̸§ º¯°æµÈ ¶óÀ̺귯¸®¸¦ ½Ç Á¦·Î
        È£ÃâÇÏ¿© »ç¿ëÇϵµ·Ï Àç¼³Á¤ÇÏ´Â ÀÛÀº wrap½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ¿©
        °­Á¦Àû À¸·Î ±¸¹öÀüÀ» »ç¿ëÇÏ°Ô ÇÒ¼öÀÖ´Ù. °ü·Ê»ó ¿©·¯¹öÀüÀÇ
        ¶óÀ̺귯¸®µéÀÌ °°Àº µð ·ºÅ丮¿¡ ÀÖÀ»¼ö ÀÖÁö¸¸ ÀÌ  ±¸¹öÀüÀÇ
        ¶óÀ̺귯¸®¸¦ µû·Î  ƯÁ¤ÇÑ µð·ºÅ丮¿¡ À§Ä¡½Ãų¼öµµ ÀÖ´Ù. wrap
        ½ºÅ©¤©Æ®´Â  ¾Æ¸¶ ¾Æ·¡¿Í °°À» °ÍÀÌ´Ù.

        #!/bin/sh
          export LD_LIBRARY_PATH=/usr/local/my_lib:$LD_LIBRARY_PATH
          exec /usr/bin/my_program.orig $*

     ÇÑ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â °øÀ¯ ¶óÀ̺귯¸®ÀÇ  ¸ñ·ÏÀº ldd(1)¸¦ ½á¼­ ¾Ë
     ¼ö ÀÖ ´Ù. ±×·¡¼­, ¿¹¸¦ µé¸é ls¸í·ÉÀÌ »ç¿ëÇÏ´Â °øÀ¯ ¶óÀ̺귯¸®ÀÇ
     ¸ñ·ÏÀº ´ÙÀ½ÀÇ ¿¹ ¿Í °°ÀÌ ¾Ë¼öÀÖ´Ù

     ldd /bin/ls
     º¸Åë ÇÁ·Î±×·¥¿¡¼­ ÀÇÁ¸ÇÏ°í ÀÖ´Â ¶óÀ̺귯¸®ÀÇ sonameÀÇ ¸ñ·Ï°ú Æ÷ÇÔµÈ
     µð ·ºÅ丮°¡ º¸ÀÏ°ÍÀÌ´Ù. ½ÇÁúÀûÀ¸·Î ´ÙÀ½ÀÇ µÎ ¸ðµâÀÇÁ¸¼ºÀº Ç×»ó
     º¸ÀÏ°ÍÀε¥ ±× °ÍÀº ¾Æ·¡¿Í °°´Ù.

     * /lib/ld-linux.so.N(NÀº 1ÀÌ»ó Àû¾îµµ 2). ÀÌ ¶óÀ̺귯¸®´Â  ´Ù¸¥
     ¸ðµç ¶óÀÌºê ·¯¸®¸¦ ÀûÀçÇÑ´Ù.

     * libc.so.N(NÀº 6¶Ç´Â ±×ÀÌ»ó).  ÀÌ°ÍÀº C ¶óÀ̺귯¸®ÀÌ´Ù.  ´Ù¸¥
     ÇÁ·Î±×·¡¹Ö ¾ð¾îµé¿¡¼­µµ(Àû¾îµµ ±× ¾ð¾îÀÇ ¶óÀ̺귯¸®¸¦
     ±¸ÇöÇϱâÀ§Çؼ­) C ¶óÀ̺귯¸® ¸¦  ¾²´Â °æÇâÀÌ ÀÖ´Ù. ±×·¡¼­ ¸ðµç
     ÇÁ·Î±×·¥¿¡¼­ Àû¾îµµ ÀÌ ¶óÀ̺귯¸®´Â Æ÷ Ç﵃ °ÍÀÌ´Ù.

     °æ°í: ldd¸¦ ½Å·ÚÇÒ¼ö ¾ø´Â ÇÁ·Î±×·¥¿¡ »ç¿ëÇÏ¿©¼­´Â ¾ÊµÈ´Ù. ÀÌ´Â
     lddÀÇ  ¸Å´º ¾ó¿¡µµ ¸í¹éÈ÷ ¾ð±ÞµÈ ¾ê±âÀÌ´Ù. ldd´Â Á÷Á¢ ±× ÇÁ·Î±×·¥À»
     È£ÃâÇÔÀ¸·Î½á ¼öÇà µÇ±â ¶§¹®¿¡ ¿¹±âÄ¡ ¸øÇÑ ÄÚµåÀÇ ½ÇÇàÀ» °¡Á®¿Ã¼ö
     Àֱ⠶§¹®ÀÌ´Ù.

     ºñȣȯ ¶óÀ̺귯¸®
        »õ·Î¿î ¹öÀüÀÇ ¶óÀ̺귯¸®°¡ ±¸¹öÀüÀÇ ¶óÀ̺귯¸®¿Í ÀÌÁøÄÚµå
        Â÷¿ø¿¡¼­ ȣȯ µÇÁö  ¾Ê´Â´Ù¸é sonameÀº º¯°æµÉ ÇÊ¿ä°¡ ÀÖ´Ù.
        ÀÌÁøÄڵ忡¼­ ºñȣȯµÇ´Â °æ ¿ì¿¡´Â  ´ÙÀ½ÀÇ ³×°¡Áö ÀÌÀ¯°¡ °¡Àå
        ±âº»ÀûÀÌ´Ù.

        1. ÇÔ¼öÀÇ ÇൿÀÌ º¯°æµÇ¾î  ¿ø·¡ÀÇ ÇÔ¼ö½ºÆå(±Ô°Ý)À» ´õ ÀÌ»ó
           ¸¸Á·ÇÏÁö ¸øÇÒ ¶§.

        2. ¿Ü·¡ µ¥ÀÌÅÍ ¾ÆÀÌÅÛÀÌ º¯ÇßÀ»¶§(¿¹¿Ü:¿É¼Ç  ¾ÆÀÌÅÛÀ»
           ¶óÀ̺귯¸®ÀÇ ±¸Á¶ ¸¶ Áö¸· ºÎºÐ¿¡ ÷°¡ÇÏ´Â °ÍÀº ÀÌ·¯ÇÑ
           ¾ÆÀÌÅÛ±¸Á¶°¡ ¶óÀ̺귯¸®ÀÇ ³»ºÎ¿¡ ÇÒ´çµÇ ¾î ÀÖ´ÂÇÑ ±¦ÂúÀ½)

        3. ¿Ü·¡ÇÔ¼ö°¡ Á¦°ÅµÇ¾úÀ» ¶§.

        4. ¿Ü·¡ÇÔ¼öÀÇ ÀÎÅÍÆäÀ̽º°¡ º¯°æµÇ¾úÀ» ¶§.

  ¸¸¾à ÀÌ·¯ÇÑ ¿øÀεéÀ» ´ç½ÅÀÌ ÇÇÇØ°£´Ù¸é  ´ç½ÅÀÇ  ¶óÀ̺귯¸®´Â
  ÀÌÁø¸ðµå¿¡ ¼­ ȣȯ°¡´ÉÇÒ °ÍÀÌ´Ù. ´Ù¸¥  ½ÄÀ¸·Î  ¾ê±âÇÏÀÚ¸é ´ç½Å
  ÀÀ¿ëÇÁ·Î±×·¥ÀÇ  ÀÌÁø ÀÎÅÍÆäÀ̽º(ABI) ȣȯ¼ºÀº ÀÌ·¯ÇÑ  º¯°æÀ»
  ÇÏÁö¾Ê´Â´Ù¸é ÁöÄÑÁú  °ÍÀÌ´Ù.  ¿¹ ¸¦µé¸é ´ç½ÅÀº »õ·Î¿î ÇÔ¼ö¸¦ Ãß°¡ÇϵÇ
  ±âÁ¸ÇÔ¼öµéÀ» »èÁ¦ÇÏÁö¾Ê±æ ¿øÇÒ¼ö ÀÖ À» °ÍÀÌ´Ù. ´ç½ÅÀº ±¸¹öÀüÀÇ
  ÇÁ·Î±×·¥ÀÌ ¶óÀ̺귯¸® ±¸Á¶ÀÇ ³¡ºÎºÐ¿¡ ¾ÆÀÌÅÛ À» Ãß°¡Çϰųª, ¶Ç´Â (ÀÀ¿ë
  ÇÁ·Î±×·¥ÀÌ  ¾Æ´Ñ)¶óÀ̺귯¸®¿¡¼­¸¸ ÀÌ·¯ÇÑ ±¸Á¶¸¦ ÇÒ´çÇϰųª, ¶Ç´Â ¾î¶²
  ƯÁ¤ÇÑ ¾ÆÀÌÅÛÀ»  ¿É¼ÇÈ­ÇÏ´Â(¶Ç´Â ¶óÀ̺귯¸®¿¡¼­  ±× ¾ÆÀÌÅÛÀ»
  ä¿ö³Ö´Â)µîµîÀÇ ÀÌ·¯ÇÑ  º¯°æ¿¡ ¿µÇâÀ»  ¹ÞÁö¾ÊÀ½ÀÌ È®½ÇÇÒ¶§¸¸ ±×
  ¶óÀ̺귯¸® ±¸Á¶¿¡ ÀÌ·¯ÇÑ ¾ÆÀÌÅÛÃß°¡¸¦ ÇÒ¼öÀÖ´Â °ÍÀÌ´Ù. »ç¿ëÀÚµéÀÌ
  ¹è¿­À» »ç¿ëÇÏ°í ÀÖÀ»½Ã¿¡´Â ±×·¯ÇÑ  ±¸Á¶È®ÀåÀ» ¾Æ¸¶ ÇÒ¼ö ¾øÀ» °ÍÀÓ¿¡
  À¯ÀÇÇ϶ó.

  4.  µ¿Àû(DL) ¶óÀ̺귯¸®

  µ¿Àû ¶óÀ̺귯¸®´Â ÇÁ·Î±×·¥ÀÇ ½ÃÀ۽ð¡ ¾Æ´Ñ ´Ù¸¥¶§¿¡ ÀûÀçµÇ´Â
  ¶óÀ̺귯¸® ¸¦ ¸»ÇÑ´Ù. Ç÷¯±×ÀεîÀÇ ¸ðµâÀº ±×°ÍÀÇ ÇÊ¿ä½Ã±îÁö ÀûÀ縦
  ±â´Ù¸®´Â °ÍÀÌ  Çã ¿ëµÇ¹Ç·Î À̵éÀÇ ±¸Çö¿¡  ƯÈ÷ À¯¿ëÇÏ´Ù. ¿¹¸¦µé¸é
  PAM(Pluggable Authenti- cation Module:ÀûÀç°¡´É ÀÎÁõ¸ðµâ)µîÀÇ
  ½Ã½ºÅÛ¿¡¼­´Â °ü¸®ÀÚ°¡ ÀÎÁõÀ»  ±¸¼º¶Ç ´Â À籸¼ºÇϴµ¥ µ¿Àû ¶óÀ̺귯¸®¸¦
  »ç¿ëÇÑ´Ù. ¶ÇÇÑ µ¿Àû ¶óÀ̺귯¸®´Â ¼ö½Ã·Î ¾ð¾îÄڵ带 ±â°è¾î·Î
  ÄÄÆÄÀÏÇÏ°í, ÄÄÆÄÀÏµÈ ¸ðµâµéÀ» È¿À²ÀûÀ¸·Î ¸ØÃã¾øÀÌ  »ç ¿ëÄÚÀúÇÏ´Â
  ÀÎÅÍÇÁ¸®Å͸¦ ±¸ÇöÇϴµ¥µµ À¯¿ëÇÏ´Ù. ÀÌ·¯ÇÑ  ¹æ¹ýÀº Àú½ºÆ® ÀΟ ÀÓ
  ÄÄÆÄÀÏ·¯(JIT)³ª ¸ÖƼ À¯Àú´øÀü(MUD:multi user  dungeon)ÀÇ °³¹ß¿¡µµ À¯
  ¿ëÇÏ´Ù.

  ¸®´ª½º¿¡¼­´Â µ¿Àû ¶óÀ̺귯¸®´Â Æ÷¸Ë¸¸ÀÇ °üÁ¡¿¡¼­ º»´Ù¸é  Ưº°ÇÑ °ÍÀÌ
  ¾Æ ´Ï´Ù. Áï,  ±×°ÍÀº À§¿¡¼­ ³íÀÇÇÑ Ç¥ÁØÀûÀÎ ¿ÀºêÁ§Æ® ÆÄÀÏÀ̳ª
  Ç¥ÁØÀûÀÎ °øÀ¯ ¶óÀ̺귯¸®·Î½á ¸¸µé¾îÁø´Ù. °¡Àå Áß¿äÇÑ Â÷ÀÌÁ¡Àº ±×°ÍÀÌ
  ÇÁ·Î±×·¥ÀÇ  ¸µÅ©½Ã ³ª ½ÃÀ۽ÿ¡ ÀÚµ¿À¸·Î ÀûÀçµÇ´Â °ÍÀÌ  ¾Æ´Ï¶ó´Â
  °ÍÀÌ´Ù. ±× ´ë½ÅÀ¸·Î ¶óÀ̺귯 ¸®¸¦ ¿­°í ½Éº¼À» »ìÇÇ¸ç ¿¡·¯¸¦ Á¦¾îÇÏ°í
  ´Ý´ÂµîÀÇ API°¡ Á¦°øµÈ´Ù.  CÀÇ »ç ¿ëÀÚ´Â ÀÌ·¯ÇÑ  API¸¦ »ç¿ëÇϱâ À§Çؼ­
  <dlfcn.h>¸¦  includeÇÏ¿©¾ß ÇÑ´Ù.  ¸®´ª½º¿¡¼­ »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽º¸¦
  ³ª´Â  "dlopen() API"¶ó°í ºÎ¸£¸ç ¼Ö¶ó¸® ½ºÀÇ ±×°Í°ú  Çٽɿ¡ À־´Â
  µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ µ¿ÀÏÇÑ ¹æ½ÄÀÇ ÀÎÅÍÆä À̽º°¡ ¸ðµç Ç÷§Æû¿¡¼­
  °°Àº °ÍÀº ¾Æ´Ï´Ù. HP-UX´Â shl_load()¶ó´Â  ´Ù¸¥ ¸Þ Ä¿´ÏÁòÀ» »ç¿ëÇϸç
  À©µµ¿ìÁî¿¡¼­´Â DLLÀ» ¿ÏÀüÈ÷  ´Ù¸¥ ÀÎÅÍÆäÀ̽º·Î  ´Ù·é ´Ù.  À̽ļº¿¡
  ¸ñÇ¥¸¦  µÐ´Ù¸é  Ç÷§Æû°£ÀÇ  ÀÌÁú¼ºÀ»  ¼û±â°ÔÇØÁÖ´Â  ¸î°³ÀÇ wrapping
  ¶óÀ̺귯¸®ÀÇ »ç¿ëÀ» °í·ÁÇؾßÇÑ´Ù. ÇÑ°¡Áö ¹æ¹ýÀ¸·Î  glib ¶óÀ̺귯 ¸®ÀÇ
  µ¿Àû ¸ðµâÀûÀç±â´ÉÀÌ ÀÖ´Ù. ÀÌ°ÍÀº ÀÌ·¯ÇÑ ÇÔ¼öµéÀÇ À̽ļº ±¸ÇöÀ»  À§ÇØ
  Ç÷§ÆûÀÇ ÇϺο¡ ÀÖ´Â µ¿ÀûÀûÀç·çƾÀ»  »ç¿ëÇÑ´Ù. ÀÌ¿¡°üÇÑ ´õ ÀÚ¼¼ÇÑ
  ³»¿ëÀº [15]developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-
  modules.html <http://developer.gnome.org/doc/API/glib/glib-dynamic-
  loading-of-  modules.html> ¿¡¼­ ¹è¿ï¼ö ÀÖ´Ù.  ¿©±â ¹®¼­¿¡¼­ Àß
  ¼³¸íµÇ¾î ÀÖÀ¸¹Ç·Î ´õ ÀÌ»ó ÀÇ ¼³¸íÀº ÇÏÁö ¾Ê°Ú´Ù.  ´Ù¸¥  ¹æ¹ýÀº [16]GNU
  libtoolÁß¿¡  ÇϳªÀÎ  libltdlÀ» ¾²´Â °ÍÀÌ´Ù. ÀÌ°ÍÀÇ  ´Ù¾çÇÑ ±â´ÉÀ»
  ¾²±âÀ§Çؼ­´Â  ¾Æ¸¶µµ COBRA   Object Broker(ORB)¸¦ º¸±æ ¹Ù¶õ´Ù.
  ¸®´ª½º¿Í ¼Ö¶ó¸®½º¿¡¼­  Á¦°øÇÏ´Â ±â´É¿¡ ¿©ÀüÈ÷ °ü½ÉÀÌ ÀÖ´Ù¸é °è¼Ó
  ÀоîÁÖ±æ ¹Ù¶õ´Ù.

     dlopen()
        dlopen(3) ÇÔ¼ö´Â ¶óÀ̺귯¸®¸¦ ¿­¾î¼­ »ç¿ëÁغñ¸¦ ÇÑ´Ù.  C¿¡¼­
        ÇÔ¼öÀÇ  ¿ø ÇüÀº ¾Æ·¡¿Í °°´Ù.

        void *dlopen(const char *filename, int flag);

        ¸¸¾à¿¡ ÆÄÀÏÀÇ À̸§ÀÌ  /(Áï, Àý´ë°æ·Î)·Î  ½ÃÀÛÇÑ´Ù¸é  dlopen()Àº
        ¶óÀ̺귯 ¸®¸¦ Ž»öÇÏÁö ¾ÊÀ»°ÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é dlopen()Àº
        ´ÙÀ½°ú °°Àº ¼ø¼­·Î ¶ó À̺귯¸®¸¦ Ž»öÇÑ´Ù.

        1. ÄÝ·ÐÀ¸·Î ºÐ¸®µÈ »ç¿ëÀÚÀÇ LD_LIBRARY ȯ°æº¯¼öÀÇ °¢ µð·ºÅ丮
           ¸ñ·Ï.

        2. /etc/ld.so.cache¿¡ ¸í¼¼µÈ ¶óÀ̺귯¸®µé

        3. /lib, ±×´ÙÀ½Àº /usr/lib

        dlopen()¿¡¼­ Ç÷¡±×ÀÇ °ªÀº µ¿Àû ¶óÀ̺귯¸®·Î ºÎÅÍÀÇ ÄÚµå
        ¼öÇà½Ã¿¡ ¹ÌÁ¤ÀÇ µÈ ½Éº¼°ªÀ» ÇØ°áÇÔÀ» ¶æÇÏ´Â RTLD_LAZY,
        dlopen()ÀÌ ¸®ÅϵDZâÀü   ¸ðµç ¹Ì Á¤ÀÇµÈ ½Éº¼ÀÇ °ªÀÌ ÇØ°áµÇ´Â,
        ±×·¸Áö   ¾ÊÀ¸¸é ½ÇÆи¦ ¶æÇÏ´Â  RTLD_NOW ÁßÀÇ Çϳª°¡ µÇ¾î¾ß ÇÑ´Ù.
        ¶óÀ̺귯¸®³»¿¡¼­ Á¤ÀÇµÈ ¿Ü·¡½Éº¼ÀÌ ¼øÂ÷ÀûÀ¸·Î È£ÃâµÇ´Â
        ¶óÀ̺귯¸®µé¿¡ ÀÇÇؼ­ À¯È¿ÇØÁüÀ»  ¶æÇÏ´Â  RTLD_ GLOBAL¶ÇÇÑ
        »ç¿ëµÇ°Å³ª ¿É¼ÇÀÌ  µÉ ¼ö  ÀÖ´Ù. µð¹ö±ë ÁßÀ̶ó¸é  RTLD_LAZY´Â
        ¹ÌÇØ°áµÈ ½Éº¼ÂüÁ¶¿¡ ÀÇÇÑ ¿¹Ãø ºÒ°¡´ÉÀÇ ¿¡·¯¸¦  ÀÏÀ¸Å³¼ö
        ÀÖÀ¸¹Ç·Î RTLD_NOW¸¦ »ç¿ëÇÏ±æ ¿øÇÒ   °ÍÀÌ´Ù. RTLD_NOW´Â
        ¶óÀ̺귯¸®¸¦  ¿©´Âµ¥ ¾à°£ ´À¸®´Ù.  ÀÌ°ÍÀÌ ¹®Á¦°¡ µÈ´Ù¸é
        RTLD_LAZY·Î ³ªÁß¿¡ ÀüȯÇϸéµÈ´Ù.

        ¸¸¾à ¶óÀ̺귯¸®µéÀÌ ¼­·Î ÀÇÁ¸ÇÒ °æ¿ì(¿¹¸¦ µé¸é  X°¡ Y¸¦
        ÀÇÁ¸ÇÑ´Ù¸é), ÀÇ Á¸ÀÌ µÇ¾îÁÖ´Â ¶óÀ̺귯¸®(ÀÌ ¿¹¿¡¼­´Â Y)¸¦ ¸ÕÀú
        ·ÎµåÇÏ¿©¾ß ÇÑ´Ù.  dlopen()ÀÇ ¸®ÅÏ°ªÀº (ÀûÀçµÇ´Â µ¿Àû
        ¶óÀ̺귯¸®ÀÇ ÀÏÁ¾ÀÇ ÆÄÀÏ) ÇÚµé(handle) ÀÌ´Ù. ±×°ÍÀº ´Ù¸¥ µ¿Àû
        ¶óÀ̺귯¸® ·çƾ¿¡¼­ »ç¿ëµÇ¾îÁú ¾î¶°ÇÑ °ªÀÌ¶ó  °í·Á µÉ¼ö ÀÖÀ»
        °ÍÀÌ´Ù. ÀûÀç½Ãµµ°¡  ½ÇÆÐÇÏ¸é  dlopen()Àº NULLÀ» ¸®ÅÏÇÒ °ÍÀ̸ç
        Á¡°ËÇØ º¸±æ ¹Ù¶õ´Ù. °°Àº ¶óÀ̺귯¸®°¡ µÎ¹ø  ÀÌ»ó dlopen()¿¡
        ÀÇÇؼ­ ·ÎµåµÈ ´Ù¸é °°Àº ÆÄÀÏ ÇÚµéÀÌ ¸®ÅϵȴÙ.

        ¸¸¾à ¶óÀ̺귯¸®¿¡¼­  _init·Î  ¸í¸íµÈ ·çƾÀ»  ¿ÜºÎ È£Ãâ ÇÑ´Ù¸é ±×
        Äڵ尡 dlopen()ÀÇ ¸®ÅÏÀü¿¡ ¼öÇàµÈ´Ù. ÀÌ·¯ÇÑ »ç½ÇÀ»  ÀÌ¿ëÇØ
        ´ç½ÅÀÇ ¶óÀ̺귯¸®¿¡¼­ ÃʱâÈ­  ·çƾÀ» ±¸ÇöÇÏ¸é µÉ °ÍÀÌ´Ù.

     dlerror()
        ¿¡·¯´Â  dlerror()À»  È£ÃâÇÔÀ¸·Î½á   º¸°íµÇ´Âµ¥, ÀÌ   ÇÔ¼ö´Â
        °¡Àå  ÃÖ±ÙÀÇ dlopen(), dlsym(), ¶Ç´Â dlclose()·Î  ÀÎÇØ  ¹ß»ýÇÑ
        ¿¡·¯¸¦  ±â¼úÇÏ´Â   ½ºÆ®¸µ À» ¸®ÅÏÇÑ´Ù.  ÇÑ°¡Áö  Ưº°ÇÑ Á¡Àº
        dlerror()¸¦ È£ÃâÇÏ°í ³­µÚ¿¡´Â ±×  ´ÙÀ½ºÎ ÅÍ´Â ¶Ç´Ù¸¥ ¿¡·¯°¡
        ¹ß»ýÇϱâ Àü±îÁö  dlerror()´Â NULLÀ» ¸®ÅÏÇÑ´Ù´Â °ÍÀÌ ´Ù.

     dlsym()
        µ¿Àû ¶óÀ̺귯¸®¸¦ ÀûÀçÇÏ°í »ç¿ëÇÏÁö ¸øÇÑ´Ù¸é ¾Æ¹«·± Àǹ̵µ ¾øÀ»
        °ÍÀÌ´Ù.  dlsym(3)Àº ¶óÀ̺귯¸® »ç¿ëÀÇ °¡Àå ÁÖµÈ ·çƾÀÌ¸ç  ÀÌ
        ÇÔ¼ö´Â ¿ÀÇÂµÈ ¶óÀÌºê ·¯¸®¿¡¼­  ½Éº¼°ªÀ» Á¶»çÇÑ´Ù. ÀÌÇÔ¼ö´Â
        ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾîÀÖ´Ù.

        void *dlsym(void *handle, char *symbol);

        handleÀº dlopen()¿¡ ÀÇÇØ ¸®ÅϵǴ °ªÀ̸ç symbolÀº NIL-·Î ³¡³ª´Â
        ¹®ÀÚ¿­ ÀÌ´Ù. dlsym()ÀÇ °á°ú°ªÀ» void * ŸÀÙÀÇ Æ÷ÀÎÅÍ¿¡ ÀúÀåÇϸé
        ¸Å¹ø »ç¿ë½Ã¸¶´Ù ij½ºÆ® ¿¬»êÀ» ¼öÇàÇØ¾ß ÇϹǷÎ(±×¸®°í, ÇÁ·Î±×·¥À»
        À¯ÁöÇÏ·Á´Â ¸¹Àº  ´Ù¸¥ »ç ¶÷µé¿¡°Ô ÀûÀº  Á¤º¸¹Û¿¡ ÁÖÁö¸øÇÒ
        °ÍÀ̹ǷÎ) ÇÇÇÒ¼ö ÀÖ´Ù¸é ÀÌ·¸°Ô ÇÏÁö¸»±æ ¹Ù¶õ´Ù.

        dlsym()Àº ½Éº¼ÀÌ ¹ß°ßµÇÁö ¾ÊÀº°æ¿ì¿¡ NULL°ªÀ»  ¸®ÅÏÇϰԵȴÙ.
        ¸¸¾à¿¡ ¾î ¶² ½Éº¼ÀÌ °áÄÚ Á¦·Î³ª NULL°ªÀ» °¡ÁöÁö  ¾ÊÀ» °ÍÀ»
        ´ç½ÅÀÌ ¾Ë°í ÀÖ´Ù¸é ¾Æ ¹«·± ¹®Á¦µµ ¾øÀ¸³ª ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é
        ÀáÀçÀûÀÎ ¸ðÈ£¼ºÀÌ Á¸ÀçÇÏ°Ô µÈ´Ù, Áï ¸¸¾à¿¡ NULL°ªÀ» °¡Áö°Ô µÈ
        °æ¿ì ±×°ÍÀÌ ±×·± ½Éº¼ÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â °Í ÀÎÁö ¾Æ´Ï¸é ½ÇÁ¦·Î
        ±×  ½Éº¼ÀÇ °ªÀÌ NULLÀÎÁö ÇÏ´Â  °ÍÀÌ´Ù. Ç¥ÁØÀûÀÎ ÇØ°á Ã¥Àº
        dlerror()À» È£Ãâ(Á¸ÀçÇÒ¼ö ÀÖ´Â   ¸ðµç ¿¡·¯ÀÇ  °¡´É¼ºÀ»
        ÇؼÒÇϴ°ÍÀÓ) ÇÏ°í ±×´ÙÀ½À¸·Î ½Éº¼°ªÀ» ¾Ë±âÀ§ÇØ dlsym()À» È£ÃâÇÑ
        µÚ dlerror()À»  Çѹø ´õ È£ÃâÇÏ¿© ¿¡·¯°¡ ¹ß»ýÇß´ÂÁö¸¦ Á¡°ËÇÏ´Â
        °ÍÀÌ´Ù.  ÀÌ ºÎºÐÀÇ Äڵ带 ¹ßÃéÇÑ ´Ù¸é  ¾Æ·¡¿Í °°À» °ÍÀÌ´Ù.

        dlerror();
         /* ¿¡·¯ÄÚµåÀÇ ÃʱâÈ­ */
        s = (actual_type) dlsym(handle, symbol_being_searched_for);
         if ((err = dlerror()) != NULL)
          /* ½Éº¼°ªÀ» ãÁö ¸øÇÒ¶§ */
          else
          /* ½Éº¼°ªÀ» ã¾ÒÀ» ¶§ ±× °ªÀÌ s¿¡ ÀÖÀ½ */

     dlclose()
        dlclose()´Â dlopen()ÀÇ ¿ªÀ¸·Î½á µ¿Àû ¶óÀ̺귯¸®¸¦ ´Ý´Âµ¥
        »ç¿ëµÈ´Ù. µ¿Àû ¶ó À̺귯¸®´Â µ¿Àû ÆÄÀÏÇڵ鿡 °üÇÑ ¸µÅ©¼öÈ¿¸¦
        °è¼Ó  À¯ÁöÇÏ°í ÀÖÀ¸¹Ç·Î  Àû¾î µµ dlopen()ÀÌ È£ÃâµÈ Ƚ¼ö¸¸Å­ÀÇ
        dlclose()ÀÇ ¼öÇàÀÌ  ¾ø±â Àü¿¡´Â ½ÇÁ¦ÀûÀ¸·Î ¸Þ¸ð¸®¿¡¼­ »èÁ¦µÇÁö
        ¾Ê´Â´Ù.  ±×·¡¼­ °°Àº ÇÁ·Î±×·¥ÀÌ °°Àº  ¶óÀ̺귯¸®¸¦ ¿© ·¯¹ø
        È£ÃâÇÏ´Â °ÍÀº ¾Æ¹«·± ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù.

  µ¿Àû ¶óÀ̺귯¸®ÀÇ ¿¹ dlopen()ÀÇ ¸Å´º¾ó ÆäÀÌÁö¿¡ ³ª¿À´Â
  µ¿Àû¶óÀ̺귯¸®ÀÇ  ¿¹°¡ ¾Æ·¡¿¡ ÀÖ´Ù. ¿¹ ¿¡¼­´Â ¼öÇжóÀ̺귯¸®°¡
  ·ÎµåµÇ°í 2.0ÀÇ cosine°ªÀÌ  Ãâ·ÂµÇ¸ç ¸Å¼ø°£¸¶´Ù ¿¡ ·¯¸¦
  °Ë»ç(±Ç°íµÊ)ÇÑ´Ù.

  ______________________________________________________________________
      #include <stdio.h>
      #include <dlfcn.h>
      int main(int argc, char **argv)
          void *handle;
          double (*cosine)(double);
          char *error;
          handle = dlopen ("/lib/libm.so", RTLD_LAZY);
          if (!handle)
              fputs (dlerror(), stderr);
              exit(1);

          cosine = dlsym(handle, "cos");
          if ((error = dlerror()) != NULL)
              fputs(error, stderr);
              exit(1);

          printf ("%f", (*cosine)(2.0));
          dlclose(handle);

  ______________________________________________________________________

  ¸¸¾à À§ÀÇ ÇÁ·Î±×·¥ÀÇ À̸§ÀÌ foo.c ¶ó¸é ´ÙÀ½ÀÇ ¸í·ÉÀ» ½á¼­
  ½ÇÇàÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù.

  gcc -Wl,export-dynamic -o foo foo.c -ldl -WI, export-dynamic ¿É¼ÇÀº
  ½ÇÁúÀûÀ¸·Î ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï³ª ¶§¶§·Î À¯¿ëÇÔ À» ¾Ë°ÔµÉ °ÍÀÌ´Ù.  ±×°ÍÀº
  ld¿¡ Á¤ÀǵǾî Àִµ¥ ELFÆÄÀÏÀÇ »ý¼º½Ã¿¡ ÀÌ¿É¼Ç Àº ¸ðµç ½Éº¼À» ´ÙÀ̳ª¹Í
  ½Éº¼Å×ÀÌºí¿¡ ºÎ°¡ÇÑ´Ù. Åë»óÀûÀ¸·Î ´ÙÀ̳ª¹Í ½Éº¼Å× À̺íÀº  µ¿Àû
  ¿ÀºêÁ§Æ®¿¡¼­  »ç¿ëµÇ´Â  ½Éº¼¸¸À»  °¡Áö°í  ÀÖ´Ù.  ÀÌ  ¿É¼ÇÀº dlopen()ÀÇ
  ¾î¶² ¿ëµµ¿¡¼­ ÇÊ¿äÇÏ´Ù.  -WI, export-dynamic º¸´Ù -rdynamicÀ» ¾²¶ó°í
  ¸»ÇÒ¼öµµ  ÀÖ°ÚÁö¸¸ ELF¹®¼­¿¡ ÀÇÇϸé -rdynamicÀº ºñ  ¸®´ª½º  ½Ã½º ÅÛÀÇ
  gcc¿¡¼­´Â Ç×»ó Á¦´ë·Î µ¿ÀÛÇÏ´Â °ÍÀº ¾Æ´Ï¶ó°í ÇÑ´Ù.

  5.  ºÎ°¡Àû ³»¿ëµé

  nm ¸í·É

  nm¸í·ÉÀº ÁÖ¾îÁø ¶óÀ̺귯¸®ÀÇ ½Éº¼¸ñ·ÏÀ» º¸°íÇÑ´Ù. ±×°ÍÀº °øÀ¯ ¹×
  Á¤Àû¶ó À̺귯¸® ¸ðµÎ¿¡¼­ µ¿ÀÛÇÑ´Ù. ÁÖ¾îÁø ¶óÀ̺귯¸®ÀÇ Á¤ÀÇµÈ ½Éº¼¸í°ú
  °ª ±×¸®°í ŸÀÙÀ» ¾Ë·ÁÁØ´Ù. ÀÌ ¸í·ÉÀº ¶ÇÇÑ ¶óÀ̺귯¸®¿¡¼­ ÀÌ Á¤º¸°¡
  À¯È¿ÇÏ°Ô  µÇ¾îÀÖ ´Ù¸é(-ls¿É¼ÇÀ» º¸¶ó) ¼Ò½ºÄÚµå»óÀÇ ¾îµð¿¡¼­ ½Éº¼ÀÌ
  Á¤ÀǵǾú´Â°¡(ÆÄÀÏÀ̸§°ú ¶óÀγѹö·Î)µµ ¾Ë·ÁÁØ´Ù.

  ½Éº¼Å¸ÀÙ¿¡ ´ëÇؼ­´Â Á»´õ ¼³¸íÀÌ ÇÊ¿äÇÏ´Ù. ŸÀÙÀÌ º¸°íµÉ ¶§ ¼Ò¹®ÀÚ´Â
  Áö¿ª º¯¼öÀÓÀ» ³ªÅ¸³»¸ç ´ë¹®ÀÚ´Â Àü¿ª(¿ÜºÎ)º¯¼öÀÓÀ» ³ªÅ¸³½´Ù. ÀüÇüÀûÀÎ
  ½Éº¼Å¸ÀÙ ¿¡´Â T(ÄÚµåºÎºÐ¿¡¼­ º¸ÅëÀÇ Á¤ÀÇ),  D(ÃʱâÈ­µÈ µ¥ÀÌŸ ºÎºÐ),
  B(ÃʱâÈ­ ¾ÊµÈ µ¥ÀÌÅÍ ¼½¼Ç), U(¹ÌÁ¤ÀÇ:½Éº¼ÀÌ ¶óÀ̺귯¸®¿¡¼­ »ç¿ëµÇ³ª
  ±× ¶óÀ̺귯¸®¿¡ ÀÇ Çؼ­ Á¤ÀǵÇÁö ¾ÊÀ½), W(´Ù¸¥ ¶óÀ̺귯¸®°¡ ÀÌ ½Éº¼À»
  Á¤ÀÇÇÏ¸é ±× ³»¿ëÀÌ ÀÌ ¸¦ ´ëÄ¡(override)ÇÔ)µîÀÌ ÀÖ´Ù.

  ÇÔ¼öÀÇ À̸§Àº ¾Ë°í ÀÖÁö¸¸ Á¤È®È÷ ¾î´À  ¶óÀ̺귯¸®¿¡¼­ Á¤ÀǵǾîÀÖ´ÂÁö
  ¸ð ¸¥´Ù¸é nm ¸í·ÉÀÇ -o¿É¼Ç(°¢ ¶óÀθ¶´Ù ÆÄÀϸíÀ» ¾Õ¿¡  º¸¿©ÁÜ)À»
  »ç¿ëÇÏ°í µ¿ ½Ã¿¡ grep¸í·ÉÀ» ½á¼­   ¶óÀ̺귯¸®ÀÇ  À̸§À»  ã¾Æº¸±æ
  ¹Ù¶õ´Ù. Bourne shell¿¡¼­ /lib, /usr/libÀÇ ¸ðµç ¶óÀ̺귯¸®¿Í /usr/lib,
  /usr/local/libÀÇ Á÷°è ¼­ ºêµð·ºÅ丮¿¡¼­ "cos"¸¦ ã´Â °ÍÀº ¾Æ·¡¿Í °°À»
  °ÍÀÌ´Ù.

  ______________________________________________________________________
  nm -o /lib/* /usr/lib/* /usr/lib/*/*
     /usr/local/lib/* 2> /dev/null | grep 'cos$'
  ______________________________________________________________________

  ´õ ÀÌ»óÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀº [17]info:binutils#nmÀ» ÂüÁ¶Ç϶ó °øÀ¯
  ¶óÀ̺귯¸®´Â ½ºÅ©~PlÆ®Àϼö ÀÖ´Ù.

  GNU ·Î´õ´Â °øÀ¯ ¶óÀ̺귯¸®°¡  ¹ÙÀ̳ʸ® ÀÌ¿Ü¿¡µµ ƯÁ¤ÇÑ ½ºÅ©¸³Æ®¾ð¾î·Î
  ÀÛ¼ºµÈ ÅؽºÆ®ÆÄÀϷεµ °¡´ÉÇϵµ·Ï Çã¿ëÇÏ°í ÀÖÀ½À» ¾ËÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ°ÍÀº
  °£ Á¢ÀûÀ¸·Î ´Ù¸¥ ¶óÀ̺귯¸®µéÀ» Á¶ÇÕÇϴµ¥ À¯¿ëÇÏ´Ù. ¿¹¸¦ µé¾î ³ªÀÇ
  ½Ã½ºÅÛÁß ÀÇ Çϳª¿¡ »ç¿ëµÈ /usr/lib/libc.soÀÇ ¸ñ·ÏÀÌ ¾Æ·¡¿¡ ³ª¿ÍÀÖ´Ù.

  /* °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸ÕÀú »ç¿ëÇÏ¸ç ´Ü  ¾î¶² ÇÔ¼öµéÀº Á¤Àû
  ¶óÀ̺귯¸®ÀÌ¹Ç ·Î ±×°ÍÀ» ´ÙÀ½Â÷·Ê·Î »ç¿ëÇÏ´Â GNU ld scriptÀÓ.  */
  GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a ) ´õ ¸¹Àº  ³»¿ëÀº ld
  ¸µÄ¿¿¡ °üÇÑ  texinfo ¹®¼­¸¦  º¸¶ó.  ÀϹÝÀûÀÎ  Á¤º¸´Â info:ld#Options,
  info:ld#Commands, ±×¸®°í ºñ½ÁÇÑ  info:ld#Option Commands µî¿¡¼­
  ã¾Æº¸¶ó

  GNU Libtool

  ´Ù¾çÇÑ ½Ã½ºÅÛ¿¡ À̽İ¡´ÉÇÑ  ÀÀ¿ëÇÁ·Î±×·¥À» Á¦ÀÛÁßÀ̶ó¸é  GNU LibtoolÀ»
  »ç¿ëÇÏ¿© ¶óÀ̺귯¸®¸¦ ¸¸µé°í ¼³Ä¡ÇÒ °ÍÀ» °í·ÁÇØ º¸¶ó. GNU  LibtoolÀº
  Àü ÇüÀûÀÎ ¶óÀ̺귯¸® Áö¿ø  ½ºÅ©¸³Æ®ÀÌ´Ù. LibtoolÀº  ¶óÀ̺귯¸® »ç¿ëÀÇ
  º¹À⼺ À» ÀÏ°üµÇ°í À̽İ¡´ÉÇÑ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇؼ­  Á¦°ÅÇØÁÙ °ÍÀÌ´Ù.
  LibtoolÀº ¿À ºêÁ§Æ® ÆÄÀÏÀÇ »ý¼º, Á¤Àû  ¹× °øÀ¯¶óÀ̺귯¸®ÀÇ ¸µÅ©,  ½ÇÇà
  ¹ÙÀ̳ʸ®ÀÇ ¸µÅ© ¹× µð¹ö±×, ¶óÀ̺귯¸®ÀÇ ¼³Ä¡, ½ÇÇà ¹ÙÀ̳ʸ®ÀÇ ¼³Ä¡¸¦
  À§ÇÑ À̽ÄÀû ÀÎÅÍÆäÀÌ ½º¸¦  Á¦°øÇÑ´Ù. ±×¾È¿¡´Â  libltdlÀ̶ó´Â µ¿ÀûÀûÀç
  ÇÁ·Î±×·¥À» À§ÇÑ  À̽ļº wrapper°¡ ¶ÇÇÑ Æ÷ÇԵȴÙ. ´õ  ¸¹Àº Á¤º¸´Â
  [19]www.gnu.org/software/libtool/manual.html
  <http://www.gnu.org/software/libtool/manual.html> ¿¡¼­ ã¾Æº¸±æ
  ¹Ù¶õ´Ù.

  6.  »ç¿ë¹ýÀÇ ¿¹½Ã

  ¾Æ·¡ ºÎÅÍ´Â (Á¤Àû, °øÀ¯ ¹× µ¿Àû  ¶óÀ̺귯¸®ÀÇ)¼¼°¡Áö  ÇüÅÂÀÇ ¸ðµç
  ¶óÀÌºê ·¯¸®ÀÇ ¿¹ÀÌ´Ù. libhello.c´Â libhello.h¸¦ Çì´õ·Î  ÇÏ´Â º¸ÅëÀÇ
  ¶óÀ̺귯¸®À̸ç, demo_use.c´Â libhello.c¸¦ È£ÃâÇÏ´Â Æò¹üÇÑ
  ÇÁ·Î±×·¥ÀÌ´Ù. ±× ´ÙÀ½¿¡´Â ÀÌ°ÍÀÌ ¾î¶»°Ô Á¤Àû  ¹× °øÀ¯¶óÀ̺귯¸®·Î
  »ç¿ëµÇ´Â°¡ÀÇ ¿¹¸¦  º¸¿©ÁÖ´Â ½ºÅ©¸³Æ® (script_static, script_shared)°¡
  ÁÖ¼®°ú  ÇÔ²² ÀÖÀ¸¸ç, ±×  ´ÙÀ½¿¡´Â °øÀ¯  ¶óÀÌ ºê·¯¸®°¡   ¾î¶»°Ô  µ¿Àû
  ¶óÀ̺귯¸®·Î  »ç¿ëµÇ´ÂÁö¸¦   º¸¿©ÁÖ´Â  demo_ dyanmic.c¿Í
  script_dynamicÀÌ ÀÖ´Ù.

  File libhello.c /* libhello.c - ¶óÀ̺귯¸®·Î »ç¿ëµÇ´Â ÆÄÀÏ */ #include
  <stdio.h> void hello(void) printf("Hello, library world.");

  ______________________________________________________________________
  File libhello.h
  /* libhello.h - Çì´õ ÆÄÀÏ */

  void hello(void);
  ______________________________________________________________________

  File demo_use.c /* demo_use.c -- ¹Ù·Î hello·çƾÀ» »ç¿ëÇÏ´Â ¿¹ */
  #include "libhello.h" int main(void) { hello(); return 0; }

  ______________________________________________________________________
  File script_static
  #!/bin/sh
  # Á¤Àû ¶óÀ̺귯¸® µ¥¸ð
  # Á¤Àû ¶óÀ̺귯¸®ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀÎ libhello-static.o»ý¼º.
  # libhello-staticÀ̶ó´Â À̸§À» »ç¿ëÇÏ´Â °ÍÀº Á¤Àû ¶óÀ̺귯¸®
  # ¿Í µ¿Àû ¶óÀ̺귯¸® »ç¿ëÀ» ¾ö¿¬È÷ ±¸º°Çϱâ À§ÇÑ°ÍÀÏ »ÓÀ̹Ç
  # ·Î -staticÀ̶ó´Â À̸§À» ¿ÀºêÁ§Æ® ÆÄÀÏÀ̳ª Á¤Àû ¶óÀ̺귯¸®¿¡
  # ¾µ ÇÊ¿ä´Â ¾ø´Ù.
  gcc -Wall -g -c -o libhello-static.o libhello.c
  # Á¤Àû ¶óÀ̺귯¸®ÀÇ »ý¼º.
  ar rcs libhello-static.a libhello-static.o
  # ¿©±â¼­ libhello-static.a¸¦ ³ªÁß¿¡ »ç¿ëÇϱâ
  # À§ÇØ ¾îµò°¡¿¡ º¹»çÇØ ³õÀ»¼ö ÀÖÀ» °ÍÀÌ´Ù.
  # µ¥¸ð ¸ñÀûÀ¸·Î »ç¿ëÇϱâ À§Çؼ­ ¿ì¸®´Â
  # ÇöÀçÀÇ µð·ºÅ丮¿¡ ¶óÀ̺귯¸®¸¦ µÎ±â·Î ÇÑ´Ù.
  # demo_use ÇÁ·Î±×·¥ÀÇ ÄÄÆÄÀÏ
  gcc -Wall -g -c demo_use.c -o demo_use.o
  # demo_use ÇÁ·Î±×·¥ÀÇ »ý¼º; -L. ¿É¼ÇÀº "." °¡ ÇÁ·Î±×·¥
  # ÀÇ »ý¼º½Ã¿¡ °Ë»öµÇ°Ô ÇÑ´Ù.  ÀÌ ¸í·ÉÀ¸·Î libhello-static.a¿¡
  # ÀÖ´Â °ü·ÃµÈ ¿ÀºêÁ§Æ®°¡ ÆÄÀÏ demo_use_static¿¡ »ðÀԵȴÙ.
  gcc -g -o demo_use_static demo_use.o -L. -lhello-static
  # ÇÁ·Î±×·¥ÀÇ ½ÇÇà
  ./demo_use_static

  ______________________________________________________________________

  ______________________________________________________________________
  File script_shared
  #!/bin/sh
  # °øÀ¯ ¶óÀ̺귯¸®ÀÇ µ¥¸ð
  # °øÀ¯ ¶óÀ̺귯¸®ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏ libhello.oÀÇ »ý¼º.
  gcc -fPIC -Wall -g -c libhello.c
  # °øÀ¯ ¶óÀ̺귯¸®ÀÇ »ý¼º.
  # -lc¸¦ »ç¿ëÇÏ¿© C ¶óÀ̺귯¸®¿Í ¸µÅ©ÇÑ´Ù. ¿Ö³ÄÇϸé
  # libhello°¡ C ¶óÀ̺귯¸®¿¡ ÀÇÁ¸µÇ±â ¶§¹®ÀÌ´Ù.
  gcc -g -shared -Wl,-soname,libhello.so.0 \
     -o libhello.so.0.0 libhello.o -lc
  # ¿©±â¼­ libhello.so.0.0¸¦ ¾î¶² µð·ºÅ丮 À̸¦Å׸é
  # /usr/local/lib¿¡ º¹»çÇÏ¿©µµ µÈ´Ù.
  # ÀÌÁ¦ ldconfig¸¦ ÀÌ¿ë ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µç´Ù.
  # sonameÀ» ¼Â¾÷ÇÔ.  ¾Æ·¡¿Í °°ÀÌ Çصµ ¹«¹æÇÏ´Ù.
  # ln -sf libhello.so.0.0 libhello.so.0
  # ¿©±â¼­´Â ±×³É ldconfig·Î Çϵµ·Ï ÇÑ´Ù.
  /sbin/ldconfig -n .
  # linker nameÀ» ¼ÂÆÃÇÑ´Ù.
  # Á»´õ ¸é¹ÐÇÏ°Ô ÇÏ·Á¸é ÀÌ¹Ì Á¸ÀçÇÏ´Â linker nameÀÌ
  # ÀÖ´ÂÁö È®ÀÎÇغ¸°í ¸¸¾à ±×·¸´Ù¸é ±×³É ³öµÖ¾ß ÇÒÁö
  # ¾Æ´ÑÁö¸¦ Àß Ã¼Å©ÇؾßÇÑ´Ù.
  ln -sf libhello.so.0 libhello.so
  # demo_use ÇÁ·Î±×·¥ ÆÄÀÏÀ» ÄÄÆÄÀÏÇÑ´Ù.
  gcc -Wall -g -c demo_use.c -o demo_use.o
  # demo_use ÇÁ·Î±×·¥ÀÇ »ý¼º.
  # -L. Àº "." ÀÌ ÇÁ·Î±×·¥ÀÇ »ý¼º½Ã¿¡ °Ë»öµÇµµ·Ï
  # ÇÑ´Ù. "." °¡ ÇÁ·Î±×·¥ ½ÇÇà½Ã¿¡ °Ë»öµÇ´Â °ÍÀÌ
  # ¾Æ´Ô¿¡ À¯ÀÇÇ϶ó.
  gcc -g -o demo_use demo_use.o -L. -lhello
  # ÇÁ·Î±×·¥ ½ÇÇà. LD_LIBRARY_PATH¸¦ »ç¿ë
  # ÇÏ¿© °øÀ¯ ¶óÀ̺귯¸®°¡ ¾îµð¿¡ Àִ°¡¸¦
  # ÇÁ·Î±×·¥¿¡ ¾Ë·Á ÁÖ¾î¾ßÇÑ´Ù.
  LD_LIBRARY_PATH="." ./demo_use
  ______________________________________________________________________

  File demo_dynamic.c /* demo_dynamic.c --  "hello" routineÀÇ µ¿ÀûÀûÀç¿Í
  »ç¿ëÀÇ ¿¹ */

  /* dlfcn.h ÆÄÀÏÀÌ µ¿ÀûÀûÀç ¶óÀ̺귯¸® ·çƾ¿¡ ÇÊ¿äÇÔ */ #include
  <dlfcn.h> #include <stdio.h> /* "libhello.h"¸¦ includeÇÒ ÇÊ¿ä°¡ ¾øÀ½¿¡
  À¯ÀÇÇ϶ó.  ±×·¸Áö¸¸ ±×¿Í °ü·ÃÇÏ¿© ¾î¶² °ÍÀº ¹Ýµå½Ã ¸í½ÃÇؾßÇÑ´Ù; Áï,
  dlsym()À¸·Î ¾òÀº °ªÀ» °¡Áö°í ÀÖÀ» µ¥ÀÌÅÍÀÇ Å¸ÀÙ Àº ºÐ¸íÈ÷ Á¤ÇØÁ®¾ß
  ÇÑ´Ù. */ /* "simple_demo_function" ŸÀÙÀº ¸Å°³º¯¼ö¿Í ¸®ÅÏ°ªÀÌ ¾ø´Â
  ÇÔ¼öÀÇ Å¸ÀÙÀ» ¸»ÇÑ´Ù. */ typedef void (*simple_demo_function)(void);

  int main(void) const char *error; void *module; simple_demo_function
  demo_function; /* µ¿Àû ¶óÀ̺귯¸®¸¦ ÀûÀçÇÔ */ module =
  dlopen("libhello.so", RTLD_LAZY); if (!module) fprintf(stderr,
  "Couldn't open libhello.so: %s", dlerror()); exit(1);

  /* ½Éº¼À» °¡Á®¿È */ dlerror(); demo_function = dlsym(module, "hello");
  if ((error = dlerror())) fprintf(stderr, "Couldn't find hello: %s",
  error); exit(1);

  /* DL ¶óÀ̺귯¸®ÀÇ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. */ (*demo_function)(); /* ¸ðµç
  °ÍÀ» ¸¶Ä£ µÚ È®½ÇÈ÷ Ŭ·Î¡ÇÑ´Ù. */ dlclose(module); return 0;

  ______________________________________________________________________

  File script_dynamic
  #!/bin/sh
  # µ¿Àû ¶óÀ̺귯¸® µ¥¸ð
  # libhello.so¿Í friends°¡ À̹Ì
  # »ý¼ºµÇ¾úÀ½À» °¡Á¤ÇÑ´Ù. ( dynamicÀÇ ¿¹¸¦ º¸¶ó).
  # demo_dynamic ÇÁ·Î±×·¥À» ¿ÀºêÁ§Æ® ÆÄÀÏ·Î ÄÄÆÄÀÏ.
  gcc -Wall -g -c demo_dynamic.c
  # demo_use ÇÁ·Î±×·¥ÀÇ »ý¼º.
  # ÀÌ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇϴ ƯÁ¤ÀÇ ¶óÀ̺귯¸®´Â ÇÁ·Î±×·¥ÀÌ
  # ½ÃÀÛµÇ°í ³­µÚ°¡ µÇ±â Àü±îÁö´Â ÀûÀçµÇÁö ¾Ê±â ¶§¹®¿¡ µ¿Àû
  # ¶óÀ̺귯¸®¸¦ ã±âÀ§ÇØ ¾îµð¸¦ °Ë»öÇØ¾ß ÇÏ´ÂÁö ¾Ë¸± ÇÊ¿ä°¡
  # ¾øÀ½¿¡ À¯ÀÇÇ϶ó.
  # ±×·¸Áö¸¸ µ¿Àû ¶óÀ̺귯¸®¸¦ ÀûÀçÇÏ´Â ¶óÀ̺귯¸®¸¦
  # Æ÷ÇÔÇϱâ À§Çؼ­ -ldl¿É¼ÇÀº ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù.
  gcc -g -o demo_dynamic demo_dynamic.o -ldl
  # ÇÁ·Î±×·¥ÀÇ ½ÇÇà. LD_LIBRARY_PATH ¸¦ ÀÌ¿ëÇÏ¿©
  # ÇÁ·Î±×·¥ÀÌ ¾îµð¼­ µ¿Àû ¶óÀ̺귯¸®¸¦ ¾òÀ»¼ö
  # ÀÖ´ÂÁö ¾Ë·Á ÁÖ¾î¾ß ÇÑ´Ù.
  .
  LD_LIBRARY_PATH="." ./demo_dynamic
  ______________________________________________________________________

  7.  ´Ù¸¥ Âü°í ¹®Çå ¹× ¼Ò½º

  ¶óÀ̺귯¸®¿¡ °üÇÑ Æ¯È÷ À¯¿ëÇÑ ¼Ò½º¿Í Á¤º¸°¡ ´ÙÀ½ÀÇ ¹®¼­¿¡ ÀÖ´Ù;

  o  ``The GCC HOWTO'' -Daniel BarlowÀú. ƯÈ÷ ÀÌ  HOWTO ¹®¼­´Â ¶óÀÌ
     ºê·¯¸®ÀÇ »ý¼º¿¡ ÇÊ¿äÇÑ ÄÄÆÄÀÏ·¯ ¿É¼Ç°ú  ¶óÀ̺귯¸®¿¡ ¾î¶»°Ô
     ÁúÀÇÇϴ°¡¿¡ °üÇؼ­ Àß³íÀÇ µÇ°í ÀÖ´Ù. ÀÌ ¹®¼­´Â ¿©±â¼­ ´Ù·çÁö ¸øÇÑ
     ³»¿ëÀ» ´Ù·ç¾îÁÙ  °Í ÀÌ¸ç ¿ªÀ¸·Î ±× ¹®¼­°¡ ´Ù·çÁö ¸øÇÑ ³»¿ëÀÌ ¿ª½Ã
     ¿©±â¿¡¼­ ¼Ò°³µÇ°í  ÀÖ´Â °Í ÀÌ´Ù. ÀÌ HOWTO ¹®¼­´Â  Linux
     Documentation ProjectÀÇ  20] www.linuxdoc.org
     <http://www.linuxdoc.org> ¿¡¼­ ã¾Æº¼ ¼ö ÀÖ´Ù.

  o  Tool  Interface Standards  (TIS) committee(ÀÌ´Â  µ¿ÀÏÇÑ À§¿øȸ¿¡
     ÀÇÇÑ Portable Formats Specification Version 1.1ÀÇ  ÇÑ
     Chapter(Àå)ÀÌ´Ù.)¿¡  ÀÇÇÑ ``Executable and Linkable Format (ELF)''.
     ÀÌ°ÍÀº  ELF Æ÷¸Ë¿¡ °üÇÑ (GNU ³ª ¸®´ª½º¿¡¸¸   ÇÑÁ¤µÇÁö ¾ÊÀº)ÀÚ¼¼ÇÑ
     Á¤º¸µéÀ»  Á¦°øÇÑ´Ù. [21]
     tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz> À»
     º¸¸é µÈ´Ù. ÆÄÀÏÀ» MIT¿¡ ¼­ ´Ù¿î¹ÞÀ¸¸é ºñÁ¤»óÀûÀÎ  Æ÷¸ËÀÏ °ÍÀÌ´Ù.
     gunzip,  tar·Î ǬµÚ¿¡ ``hps''¶ó´Â ÆÄÀÏÀ» ¾ò°Ô µÉ°ÍÀε¥ ù°ÁÙ°ú
     ¸Ç¸¶Áö¸·ÁÙÀ» ¾ø¾Ö°í ³ª¸é ÀμⰡ´ÉÇÑ Æ÷½ºÆ® ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¾òÀ»¼ö
     ÀÖÀ»°ÍÀÌ´Ù.

  o  ``ELF: From the Programmer's Perspective'' - Hongjui LuÁöÀ½. ÀÌ
     ¹®¼­ ´Â ¸®´ª½º¿Í GNU gcc-specificÀÇ ELF¿¡  °üÇÑ Á¤º¸¸¦ Á¦°øÇϸç
     ¾òÀ»¼ö  ÀÖ´Â °÷Àº
     [22]tsx-11.mit.edu/pub/linux/packages/GCC/elf.ps.gz
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/elf.ps.gz>ÀÌ´Ù.

  8.  ÀúÀ۱ǰú ¶óÀ̼¾½º

  ÀúÀÛ±ÇÀº(C) David A.  Wheeler¿¡°Ô ÀÖÀ¸¸ç  GNU General  Public License
  (GPL)¸¦ Æ÷ÇÔÇÑ´Ù. ¾Æ¹«·± ´ë°¡¾øÀÌ Àç¹èÆ÷ ÇÒ¼ö ÀÖÀ¸¸ç ´ÙÀ½°ú °°Àº Ç׿¡
  ÀÇ °ÅÇÏ¿© Æ÷ÇÔµÈ ÅؽºÆ®¿Í ÇÁ·Î±×·¥À» ¹ø¿ª ¹× ÀÌ¿ëÇÒ¼ö ÀÖ´Ù.

  ÀÌ ÇÁ·Î±×·¥Àº ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù; Free Software Foundation¿¡ ÀÇÇؼ­
  Ãâ ÆǵǴ GNU General Public License¿¡ ÀÇ°ÅÇÏ¿© Àç¹èÆ÷ ¶Ç´Â  º¯°æÇÒ¼ö
  ÀÖ´Ù.  ¹öÀü 2¶Ç´Â ±×ÀÌ»óµµ ¸¶Âù°¡ÁöÀÌ´Ù.  ÀÌ ¹®¼­´Â ±×°ÍÀÌ À¯¿ëÇϱæ
  ¹Ù¶ó¸ç ¹èÆ÷µÇ´Â °ÍÀÌÁö¸¸ ¾î¶°ÇÑ º¸ÁõÀº ¾ø´Ù´Â °Í¿¡ À¯ÀÇÇ϶ó.
  ƯÁ¤¸ñÀûÀ̳ª »ó¾÷ÀûÀÎ »ç¿ëÀ» À§ÇÑ ¾î¶² ¾Ï½ÃÀûÀÎ º¸Áõµµ  ¾ø ´Ù´Â °Í¿¡
  À¯ÀÇÇÏ±æ ¹Ù¶ó¸ç ÀÌ¿¡ °üÇؼ­´Â  GNU General Public License¿¡¼­ ´õ
  ÀÚ¼¼È÷ º¸±æ ¹Ù¶õ´Ù.

  GNU General Public License¿Í  ÀÌ ÇÁ·Î±×·¥À» ÀÌ¹Ì  °¡Áö°í ÀÖÀ»ÅÙµ¥ ¸¸¾à
  ±×·¸Áö ¸øÇÏ´Ù¸é Free  Software Foundation,  Inc., 59  Temple Place,
  Suite 330, Boston, MA 02111-1307  USA¿¡ ÆíÁöÇ϶ó.

  À§ ³»¿ëµéÀº ´Ù¸¥ À¥»çÀÌÆ®¿¡¼­ ¹Ì·¯¸µ ÇÒ¼ö ÀÖÀ¸¸ç ´Ù¸¸,

  o  ¹Ì·¯ »çÀÌÆ®´Â ÁÖ »çÀÌÆ®°¡ °»½ÅµÇ¸é ÀÚµ¿À¸·Î °»½ÅµÉ¼ö ÀÖ¾î¾ß Çϸç,

  o  ÁÖ »çÀÌÆ®ÀÇ ÁÖ¼Ò(  23]www.dwheeler.com/program-library
     <http://www.dwheeler.com/program-library>)¸¦ ºÐ¸í È÷ ¸í½ÃÇØ¾ß Çϸç
     ÀÌ¿¡ ÇÏÀÌÆÛ ÅؽºÆ® ¸µÅ© µÇ¾î¾ß Çϸç,

  o  ³»°Ô(David A. Wheeler) ÀúÀÚ·Î½á °¡Á®¾ßÇÒ Á¢±Ù±ÇÀ» ÁÖ¾î¾ß ÇÑ´Ù.

     »óÀ§ÀÇ µÎ Ç׸ñÀº ³»°¡ ¾µ¸ð¾ø´Â  ¹ö±×¸®Æ÷Æ®¸¦ °è¼ÓÇؼ­ ¹ÞÁö ¾Ê°Ô
     ÇØÁØ´Ù.  ³ª´Â ´ç½ÅÀÇ À߸øµÈ ¹Ì·¯¸µÀ¸·Î  ÀÎÇØ 1³âÀü¿¡ °íÄ£ ¹ö±×ÀÇ
     º¸°í¸¦ ¹ÞÁö¾Ê±æ ¿øÇÑ´Ù. ÁÖ »çÀÌÆ®·Î ¸µÅ©ÇÔÀ¸·Î½á »ç¿ëÀÚ´Â
     ¹Ì·¯³»¿ëÀÌ ÃÖ½ÅÀÇ °ÍÀÎÁö ¾Ë  ¼ö ÀÖ´Ù. ³ª´Â ¸Å¿ì °­ÇÑ º¸¾ÈÀ» ÇÊ¿ä·Î
     Çؼ­ ÀϹÝÀûÀÎ ÀÎÅͳݿ¬°á Á¶Â÷ À§ÇèºÎ´ã ÇÏÁö ¾Ê´Â »çÀÌÆ®µé¿¡¼­
     ¹ß»ýµÇ´Â ¹®Á¦µé¿¡ ¸Å¿ì ¹Î°¨ÇÏ´Ù. ¸¸¾à ´ç½ÅÀÌ  ÀÌ·± Á¶°ÇÀ̶ó¸é
     Àû¾îµµ ´Ù¸¥  Æ÷ÀÎÆ®¸¦ ã¾Æ¼­ ÀÚÁÖ  ½º´ÏÄ¿³Ý ¾÷µ¥ÀÌÆ®(sneaknet
     update)Ç϶ó.

  ÀÌ ¶óÀ̼¾½º¿¡ ÀÇÇؼ­ ´ç½ÅÀº ¹®¼­¸¦ º¯°æÇÒ¼ö ÀÖÁö¸¸  ´ç½ÅÀÌ ¾²Áö ¾ÊÀº
  ³» ¿ëÀ» ´ç½Å°ÍÀ̶ó´ø°¡ º¯°æµÈ ³»¿ëÀÌ ¿ø¹®°ú °°´Ù°í ¸»ÇÒ ¼ö´Â ¾ø´Ù.
  ¹®¼­¿¡ ´ë ÇÑ º¯°æÀÌ Àüü ¹®¼­¿¡ ´ëÇÑ  ÀúÀÛ±ÇÀ» ÁÖ´Â °ÍÀÌ ¾Æ´Ï´Ù.
  ÀÌÀÏÀº  ÀúÀÛ¹ý¿¡¼­ ¸»ÇÏ´Â, ÀúÀÛ±Ç ¼Ò½Ç·Î ÀÎÇÏ¿© ÀÚÀ¯·ÎÀÌ »ç¿ëÇÒ¼ö ÀÖ´Â
  ±×·± ¼º°ÝÀÇ ÀÛ¾÷ÀÌ ¾Æ ´Ï´Ù. ¹®¼­°¡ º¯°æµÇ¾úÀ» ¶§ ±×  ³»¿ë°ú ³¯Â¥¸¦
  ºÐ¸íÈ÷ ¾Ë·Á¾ß ÇÑ´Ù´Â  ÀÚ¼¼ÇÑ ÀúÀ۱ǹýÀÇ ±ÔÄ¢À» »ìÆ캸±æ ¹Ù¶õ´Ù. º¸ÅëÀÇ
  °æ¿ì º¯°æµÈ ³»¿ëÀ» ¹®¼­ÀÇ  ÅëÇÕ ±ÇÀÚ(David A. Wheeler)¿¡°Ô ¾Ë·Á
  ÅëÇÕ½ÃÅ°´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù.

  9.  ÁÖ¼®

  1.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN12

  2.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN25

  3.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN33

  4.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN126

  5.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN168

  6.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN189

  7.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN220

  8.  file://localhost/export/sunsite/users/gferg/howto/00Program-
     Library-HOWTO.  html#AEN233

  9. http://www.gnu.org/software/libtool/libtool.html
     <http://www.gnu.org/software/libtool/libtool.html>

  10.

     developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-modules.ht
     ml <http://developer.gnome.org/doc/API/glib/glib-dynamic-loading-
     of-modules.ht ml>

  11.
     www.dwheeler.com/program-library <http://www.dwheeler.com/program-
     library>

  12.
     www.linuxdoc.org/ <http://www.linuxdoc.org/>

  13.
     info:standards#Directory_Variables

  14.
     www.pathname.com/fhs <http://www.pathname.com/fhs>

  15.

     http://developer.gnome.org/doc/API/glib/glib-dynamic-loading-of-
     modules.ht ml <http://developer.gnome.org/doc/API/glib/glib-
     dynamic-loading-of-modules.ht ml>

  16.
     www.gnu.org/software/libtool/libtool.html
     <http://www.gnu.org/software/libtool/libtool.html>

  17.
     info:binutils#nm

  18.
     www.gnu.org/software/libtool/libtool.html <
     http://www.gnu.org/software/libtool/libtool.html>

  19.
     www.gnu.org/software/libtool/manual.html
     <http://www.gnu.org/software/libtool/manual.html>
  20.
     www.linuxdoc.org/ <http://www.linuxdoc.org/>

  21.
     tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ELF.doc.tar.gz>

  22.
     tsx-11.mit.edu/pub/linux/packages/GCC/elf.ps.gz
     <ftp://tsx-11.mit.edu/pub/linux/packages/GCC/elf.ps.gz>

  23.
     www.dwheeler.com/program-library <http://www.dwheeler.com/program-
     library>