°øÀ¯ ¶óÀ̺귯¸® ¸¸µé±â

    ¹ø¿ª : À̼ºÁÖ/ °í·Á´ëÇб³ ÄÄÇ»ÅÍÇаú
    ÇÏÀÌÅÚ(linuxlee)

     

 

    ÀÌ ±Û¿¡ ´ëÇÑ ¿ø¹®Àº ´ÙÀ½ÀÇ À¥ ÆäÀÌÁö¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
    http://www.es.linuxfocus.org/English/November1997/article6.html

 

1. ¼Ò°³ : ÇÁ·Î±×·¥À» Á¦ÀÛÇÏ´Â °úÁ¤

    ±Ù·¡ÀÇ ÇÁ·Î±×·¥ Á¦ÀÛ °úÁ¤Àº ¿À·£ ½Ã°£µ¿¾È °íÅë¹ÞÀ¸¸é¼­ ½×¾Æ¿Ã·ÁÁø ÇÁ·Î±×·¡¸Óµé°ú µðÀÚÀ̳ʵéÀÇ ³ë·ÂÀÇ »ê¹°ÀÌ´Ù.

    ÀÌ·¯ÇÑ ÇÁ·Î±×·¥ Á¦ÀÛ °úÁ¤Àº ´ÙÀ½°ú °°Àº ¼ø¼­¸¦ µû¸¥´Ù.

    ¿ì¼± ÅؽºÆ® ÆíÁý±â·Î °í±Þ ¾ð¾î¸¦ »ç¿ëÇÑ ¼Ò½º Äڵ带 ¸¸µç´Ù. ¸Å¿ì Å« ÇÁ·Î±×·¥ °°Àº °æ¿ì´Â ÇϳªÀÇ ÆÄÀÏ¿¡ ´ã±â ¸Å¿ì Èûµé±â ¶§¹®¿¡ ¼Ò½º ÄÚµå ÀÚü°¡ ±â´ÉÀû ¸ðµâº°·Î ±× ±â´ÉÀ» ¼öÇàÇϴµ¥ ÀûÇÕÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î°¡ ´Ù¸¦ ¼ö Àֱ⠶§¹®¿¡ ¾Õ¿¡¼­ ³ª´µ¾îÁø ¼Ò½º ÄÚµåµéÀÌ ´Ù °°Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù.

    ¼Ò½º ÄÚµåµéÀ» »ý¼ºÇÑ ÈÄ, °¢°¢ÀÇ ÄÚµåµéÀº ±â°è(ÄÄÇ»ÅÍ)¿¡ ÀÇÇØ ½ÇÇà°¡´ÉÇÑ ÄÚµå·Î º¯È¯µÇ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô ±â°è¿¡ ÀÇÇØ ½ÇÇà °¡´ÉÇÑ Äڵ带 ¸ñÀû ÄÚµå(object code)¶ó°í ÇÑ´Ù. ÀÌ ÄÚµå´Â ±â°è¿¡ ÀÇÇØ ½ÇÇà °¡´ÉÇÏ´Ù´Â °Í¸¸ »©°í´Â ¾Õ¿¡¼­ÀÇ ¼Ò½ºÄÚµå¿Í ¶È°°Àº ±â´ÉÀ» ¼öÇàÇÏ°Ô µÈ´Ù. ¼Ò½ºÄڵ带 ¸ñÀû ÄÚµå·Î º¯È¯ÇÏ´Â °úÁ¤À» ÀϹÝÀûÀ¸·Î ÄÄÆÄÀÏ(compile)À̶ó°í ºÎ¸¥´Ù. ÄÄÆÄÀÏÀº ´ë°³ÀÇ °æ¿ì ¾Õ¿¡¼­ ³ª´« °¢°¢ÀÇ ¼Ò½º ÆÄÀϵ鿡 ´ëÇØ µû·Îµû·Î Àû¿ëµÈ´Ù. ÄÄÆÄÀÏµÈ ¸ñÀû ÄÚµåµéÀº ÇÁ·Î±×·¥À̳ª ¼­ºê ·çƾ, º¯¼ö µî ´ÙÀ½ ´Ü°è¿¡¼­ ÇÊ¿äÇÑ ´ëºÎºÐÀÇ ¿ä¼ÒµéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù.

    ÇÁ·Î±×·¥À» »ý¼ºÇϴµ¥ ÇÊ¿äÇÑ ¸ñÀû ÄÚµåµéÀÌ »ý¼ºµÈ ÈÄ, ¸µÄ¿(linker)¶ó°í ºÒ¸®¿ì´Â ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¾Õ¿¡¼­ »ý¼ºµÈ ¸ñÀû ÄÚµåµéÀ» Çѵ¥ ¹­°í ¿¬°áÇÏ´Â °úÁ¤ÀÌ ÁøÇàµÈ´Ù. ÀÌ °úÁ¤¿¡¼­´Â °¢°¢ÀÇ ¸ðµâ(¸ñÀû ÄÚµå)µé¿¡ Æ÷ÇԵǾî ÀÖ´Â ´Ù¸¥ ¸ðµâÀ» °¡¸®Å°´Â ¸Þ¸ð¸® ÁÖ¼ÒµéÀÌ °áÁ¤µÇ°Ô µÈ´Ù(¿¹¸¦ µé¾î ÇÑ ¸ðµâ¿¡¼­ ´Ù¸¥ ¸ðµâ¿¡ µé¾îÀÖ´Â º¯¼ö¸¦ °¡¸®Å°°Ô µÇ´Â °æ¿ì ¸µÅ© °úÁ¤¿¡¼­ °¢ ¸ðµâµéÀ» ÇÕÇÑ ÈÄ ÃÖÁ¾ÀûÀ¸·Î °áÁ¤µÇ´Â Àý´ë ÁÖ¼Ò¸¦ º¯¼ö ºÎºÐ¿¡ ³Ö¾î ÁÖ°Ô µÈ´Ù.) ÀÌ·¸°Ô Çؼ­ »ý¼ºµÇ´Â Á¦Ç°ÀÌ ÀϹÝÀûÀ¸·Î ¸Þ¸ð¸®¿¡ ·ÎµùµÇ°í ½ÇÇàµÇ´Â ½ÇÇà ÆÄÀÏÀÌ´Ù.

    ÇÁ·Î±×·¥ ½ÇÇàÀº ¿î¿µ üÁ¦¿¡ Æ÷ÇÔµÈ Æ¯º°ÇÑ ¼ÒÇÁÆ®¿þ¾î¿¡ ÀÇÇØ ÀÌ·ç¾îÁö¸ç ¿¹¸¦ µéÀÚ¸é ¸®´ª½ºÀÇ ½Ã½ºÅÛ ÄÝexec()µîÀÌ ÀÖ´Ù. ÀÌ ½Ã½ºÅÛ ÄÝÀº ½ÇÇà ÆÄÀÏÀ» ãÀº ÈÄ, ÇÁ·Î¼¼½º¿¡°Ô ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í, ÆÄÀÏÀÇ Æ¯º°ÇÑ ºÎºÐ(½ÇÇàÄÚµå¿Í º¯¼öµé)À» ¸Þ¸ð¸®¿¡ ÀûÀçÇÏ°í ½ÇÇàÆÄÀÏÀÇ 'ÅؽºÆ®'¶ó´Â ºÎºÐ¿¡¼­ Á¦¾î±ÇÀ» CPU¿¡°Ô ³Ñ±ä´Ù.

 

2. ÇÁ·Î±×·¥ Á¦ÀÛ °úÁ¤ÀÇ °£·«ÇÑ ¿ª»ç

    ÇÁ·Î±×·¥ Á¦ÀÛ °úÁ¤Àº Á»´õ ³ªÀº ½ÇÇà ¼º´É°ú ½Ã½ºÅÛ ¸®¼Ò½º »ç¿ëÀ» À§ÇØ Áö¼ÓÀûÀÎ °³ÇõÀ» ÇØ¿Ô´Ù.

    Ãʱ⿡ °³¹ßÀÚµéÀº Á÷Á¢ÀûÀ¸·Î ±â°è¾î Äڵ带 ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» °³¹ßÇÏ¿´´Ù. ÀÌÈÄ¿¡ ÇÁ·Î±×·¥À» °í±Þ ¾ð¾î·Î °³¹ßÇÑ ÈÄ ±â°è¾î·Î ¹ø¿ªÇÏ´Â °ÍÀÌ ÀÚµ¿È­µÊÀ¸·Î½á ÇÁ·Î±×·¥ÀÇ »ý»ê¼ºÀº ºñ¾àÀûÀ¸·Î Áõ°¡ÇÏ°Ô µÇ¾ú´Ù.

    ÇÁ·Î±×·¥ ÄÄÆÄÀÏÀÌ °¡´ÉÇØÁø ÈÄ, ÇÁ·Î±×·¥ Á¦ÀÛ °úÁ¤Àº ¼Ò½º ÆÄÀϵéÀ» »ý¼ºÇÏ°í, ÄÄÆÄÀÏÇÏ°í, ÃÖÁ¾ÀûÀ¸·Î ½ÇÇà ÆÄÀÏÀ» ½ÇÇàÇÏ´Â ÀÏ·ÃÀÇ °úÁ¤À» Æ÷ÇÔÇÏ°Ô µÇ¾ú´Ù.

    ±×·¯³ª ÄÄÆÄÀÏ °úÁ¤¿¡ CPU ½Ã°£À» Æ÷ÇÔÇÑ »ó´çÈ÷ ¸¹Àº ÀÚ¿øÀÌ ÅõÀڵǰí ÄÄÆÄÀÏÀ» ÅëÇÏ¿© »ý¼ºµÈ ¸¹Àº ÇÁ·Î±×·¥µéÀÌ °è¼Ó Àç »ç¿ëµÇ´Â ºÎºÐÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â °ÍÀ» Â÷Ãû ±ú´Ý°Ô µÇ¾ú´Ù. ´õ¿íÀÌ ´©±º°¡°¡ ¼Ò½ºÀÇ ÇÑ ºÎºÐÀ» °íÄ¡°Ô µÇ¸é ±× ¼Ò½º Äڵ带 Æ÷ÇÔÇÑ ¸ðµç ¼Ò½ºÄڵ带 ´Ù½Ã ÄÄÆÄÀÏÇؾ߸¸ ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù´Â »ç½Çµµ ±ú´Ý°Ô µÇ¾ú´Ù.

    À§¿Í °°Àº ÀÌÀ¯ ¶§¹®¿¡ ÄÄÆÄÀÏÀ» ¸ðµâº°·Î µû·Î ÇÏ´Â ¹æ½ÄÀÌ ³ª¿À°Ô µÇ¾ú´Ù. ÀÌ ¹æ½ÄÀº ¸ÞÀÎ ºÎºÐ°ú ÀÚÁÖ Àç »ç¿ëµÇ´Â ÇÔ¼ö ºÎºÐÀ» µû·Î ºÐ¸®ÇÏ¿© Àç »ç¿ëµÇ´Â ÇÔ¼ö ºÎºÐÀ» Ưº°ÇÑ Àå¼Ò¿¡ ¹Ì¸® ÄÄÆÄÀÏÇÏ¿© ³õ¾Æ µÎ´Â °ÍÀÌ´Ù. (ÈÄ¿¡ À̸¦ ¶óÀ̺귯¸®¶ó°í ºÎ¸£°Ô µÈ´Ù.)

    ÀÌ·Î½á °³¹ßÀÚ´Â Àç »ç¿ëµÇ´Â ÄÚµå ºÎºÐÀ» ´Ù½Ã ÀÛ¼ºÇÒ ÇÊ¿ä¾øÀÌ À§¿¡ ¹Ì¸® ÄÄÆÄÀÏµÈ ¸ñÀû ÄÚµåÀÇ µµ¿òÀ» ¹ÞÀ¸¸é¼­ ÇÁ·Î±×·¥À» Á¦ÀÛÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í, ÀÌ·¯ÇÑ °úÁ¤ ¶ÇÇÑ ÇÁ·Î±×·¡¸Ó°¡ °¢°¢ÀÇ ¸ðµâµéÀ» ¸µÅ©½Ãų ¶§ ´Ù ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù´Â Á¡ ¶§¹®¿¡ º¹ÀâÇϱâ´Â ¸¶Âù°¡Áö¿´´Ù.(¶ÇÇÑ ÀÌ·¯ÇÑ °úÁ¤Àº ÇÁ·Î±×·¡¸Ó°¡ ¾Ë°í ÀÖ´Â ÇÔ¼ö¸¸ ¾µ ¼ö ÀÖ´Ù´Â Á¦¾àÁ¡À» ³º°Ô µÇ¾ú´Ù.)

 

3. ¶óÀ̺귯¸®¶õ ¹«¾ùÀΰ¡?

    À§¿¡¼­ À̾߱âÇÑ ¿©·¯ °¡Áö ºÒÆíÇÔ ¶§¹®¿¡ »ç¶÷µéÀº ¶óÀ̺귯¸®¸¦ ¸¸µé°Ô µÇ¾ú´Ù. ¶óÀ̺귯¸®¶õ ¸µÄ¿°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ÆÄÀÏ Æ÷¸ËÀ» °¡Áö¸ç °³¹ßÀÚ°¡ ¶óÀ̺귯¸®¸¦ ÁöÁ¤ÇÏ¸é ¸µÄ¿°¡ ¾Ë¾Æ¼­ ÇÁ·Î±×·¥¿¡ ÇÊ¿äÇÑ ¸ðµâ¸¸ ¸µÅ© ½ÃÄÑ Áִ Ư¼öÇÑ ÆÄÀÏ ÇüÅÂÀÏ »ÓÀÌ´Ù. ÀÏ ¶óÀ̺귯¸®¸¦ ÅëÇØ °³¹ßÀÚ´Â °Å´ëÇÑ ¶óÀ̺귯¸®¿¡ ÀÖ´Â ÇÔ¼öµéÀÇ ¾î¶°ÇÑ Á¾¼Ó¼º¿¡µµ ½Å°æ¾²Áö ¾Ê°í ¶óÀ̺귯¸® ³»ÀÇ ¸ðµç ÇÔ¼ö¸¦ ¸¶À½²¯ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.

    ¿ì¸®°¡ Áö±Ý±îÁö À̾߱âÇÑ ¶óÀ̺귯¸®´Â ÇöÀç¿¡µµ º°·Î º¯È­ÇÏÁö ¾Ê°í ÀÖ´Ù. ´Ù¸¸ ¶óÀ̺귯¸® ÆÄÀÏÀÇ Æ÷¸ËÀÌ Á¶±Ý ¹Ù²î¾ú´Âµ¥ »õ·Î ¹Ù²ï Æ÷¸Ë¿¡¼­´Â ÆÄÀÏ ¸Ç ¾Õ¿¡ ±× ¶óÀ̺귯¸®¿¡ ´ëÇÑ Á¤º¸¿Í ¸µÄ¿°¡ ¸ðµç ¶óÀ̺귯¸® ÆÄÀÏÀ» Ç®Áö ¾Ê°íµµ ¶óÀ̺귯¸® ³»ºÎÀÇ ÇÔ¼öµéÀ» ¾Ë ¼ö ÀÖ°Ô ÇØÁÖ´Â ½Äº°ÀÚ¸¦ °¡Áö°í ÀÖ´Ù. ¸®´ª½º¿¡¼­´Â ranlib(1)À̶ó´Â ¸í·É¾î°¡ ÀÌ·¯ÇÑ ±â´É(¶óÀ̺귯¸® ÆÄÀÏ¿¡ ½Éº¼ Å×À̺íÀ» ´õÇÏ´Â ÀÛ¾÷)À» ¼öÇàÇØ ÁØ´Ù. À§¿¡¼­ ¼³¸íÇÑ ¶óÀ̺귯¸®¸¦ Á¤Àû ¶óÀ̺귯¸®(Static Library)¶ó°í ÇÑ´Ù.

    ÃÖÃÊ·Î ¸ÖƼ ŽºÅ· ½Ã½ºÅÛÀÌ ¼Ò°³µÈ ÈÄ ¶óÀ̺귯¸®¿¡µµ 'ÄÚµåÀÇ °øÀ¯'¶ó´Â º¯È­°¡ ¸ô·Á¿À°Ô µÈ´Ù. ¸¸¾à °°Àº ½Ã½ºÅÛ¿¡¼­ °°Àº Äڵ带 °¡Áø µÎ °³ÀÇ ÇÁ·Î±×·¥ÀÌ µ¿½Ã¿¡ ½ÇÇàµÈ´Ù¸é, µÎ ÇÁ·Î±×·¥ÀÇ ÄÚµå´Â °øÀ¯µÉ ¼ö ÀÖ´Ù.(ÇÁ·Î±×·¥½ÇÇà ½Ã, ÇÁ·Î±×·¥ÀÌ Äڵ带 ÀüÇô ¹Ù²ÙÁö ¾Ê±â ¶§¹®¿¡ °¡´ÉÇÑ °ÍÀÌ´Ù.) ÀÌ·¯ÇÑ ¾ÆÀ̵ð¾î´Â º¹¼ö°³ÀÇ Áߺ¹µÈ Äڵ带 ¸Þ¸ð¸®¿¡ ·ÎµåÇÒ Çʿ並 ¾ø¾Ö ÁÖ¾ú°í °Å´ëÇÑ ´ÙÁß »ç¿ëÀÚ ½Ã½ºÅÛ¿¡¼­ ¸¹Àº ¾çÀÇ ¸Þ¸ð¸®¸¦ Àý¾àÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.

    À§ÀÇ °³Çõ¿¡¼­ ÇÑ ¹ß¦ ¾ÕÀ¸·Î ´õ ³ª¾Æ°¡, ¸¹Àº ÇÁ·Î±×·¥µéÀÌ °°Àº ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù´Â »ç½ÇÀ» »ý°¢Çغ¸ÀÚ. ºñ·Ï °¢°¢ÀÇ ÇÁ·Î±×·¥µéÀÌ °°Àº ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ´Ù°í Çصµ, ±×µéÀÌ ¶óÀ̺귯¸®¿¡¼­ »ç¿ëÇÏ´Â ÄÚµåÀÇ ¾çÀº °¢±â ´Ù¸¦ °ÍÀÌ´Ù. ´õ¿íÀÌ ¸ÞÀÎ ÄÚµå´Â ¼­·Î ¸¶´Ù ´Ù ´Ù¸¦ °ÍÀÌ´Ù. ´õ¿íÀÌ ¸ÞÀÎ ÄÚµå´Â ¼­·Î ¸¶´Ù ´Ù ´Ù¸¦ °ÍÀÌ°í µû¶ó¼­ ±×µéÀÇ ÅؽºÆ® ¶ÇÇÑ °øÀ¯ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿©±â¼­ ¸¸¾à ÇϳªÀÇ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â °¢±â ´Ù¸¥ ÇÁ·Î±×·¥µéÀÌ ¶óÀ̺귯¸® Äڵ带 °øÀ¯ÇÒ ¼ö ÀÖ´Ù°í °¡Á¤ÇÑ´Ù¸é »ó´çÇÑ ¸Þ¸ð¸®¸¦ Àý¾àÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÚ ±×·³ ¼­·Î ´Ù¸¥ ÇÁ·Î±×·¥ ÅؽºÆ®¸¦ °¡Áö¸ç µ¿ÀÏÇÑ ¶óÀ̺귯¸®¸¦ °øÀ¯ÇÏ´Â ¼­·Î ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ.

    ±×·¯³ª ÇÁ·Î¼¼½ºÀÇ ÀÔÀå¿¡¼­ º¸¸é ÀÏÀº Á¶±Ý º¹ÀâÇØ Áø´Ù. ½ÇÇà °¡´ÉÇÑ ÇÁ·Î±×·¥Àº ¿ÏÀüÈ÷ ¸µÅ©µÈ °ÍÀÌ ¾Æ´Ï¶ó, ¶óÀ̺귯¸®ÀÇ ½Äº°ÀÚµéÀÇ ÁÖ¼Ò °ªÀ» °¡Áö´Âµ¥ ±×°Íµµ ÇÁ·Î±×·¥ÀÇ ÇÁ·Î¼¼½º·ÎÀÇ ÀûÀç ¶§¹®¿¡ Áö¿¬µÈ´Ù. ¸µÄ¿´Â ÀÚ½ÅÀÌ °øÀ¯ ¶óÀ̺귯¸®¸¦ Ãë±ÞÇÏ°í ÀÖ´Ù°í ÀÎÁöÇÏ°í ÇÁ·Î±×·¥¿¡ °øÀ¯µÈ Äڵ带 Æ÷ÇÔ½ÃÅ°Áö ¾Ê´Â´Ù. Ä¿³ÎÀÇ °æ¿ì exec() ÇÔ¼ö¸¦ ÅëÇØ ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¶§ ÀÚ½ÅÀÌ °øÀ¯ ¶óÀ̺귯¸®¸¦ ·ÎµùÇϱâ À§ÇÑ Æ¯º°ÇÑ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù.(ÀÌ ÇÁ·Î±×·¥Àº ±× ÀÚ½ÅÀÇ ÅؽºÆ®¿¡ ´ëÇÑ °øÀ¯ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ¶óÀ̺귯¸®ÀÇ º¯¼öµéÀ» À§ÇÑ °³ÀÎ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â µîÀÇ ÀÛ¾÷À» ÇÑ´Ù.) ½ÇÇà ÆÄÀÏÀ» ·ÎµùÇÒ ¶§ ÀÌ ÇÁ·Î¼¼½º´Â ½ÇÇàµÇ°í ¸ðµç ÇÁ·Î½ÃÁ®´Â ´õ´õ¿í º¹ÀâÇÏ´Ù.

    ¹°·Ð ¸µÄ¿°¡ ÀϹÝÀûÀÎ ¶óÀ̺귯¸®¸¦ ¸¸³µÀ» ¶§¿¡´Â ¿ø·¡´ë·Î ÇൿÇÑ´Ù.

    °øÀ¯ ¶óÀ̺귯¸®´Â ¸ñÀû Äڵ带 Æ÷ÇÔÇÑ ÆÄÀϵéÀÇ ÁýÇÕÀ̶ó±âº¸´Ù´Â ¸ñÀû Äڵ带 Æ÷ÇÔÇÑ ÆÄÀÏ ±× ÀÚü¶ó°í º¼ ¼ö ÀÖ´Ù. °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸µÅ·ÇÏ´Â µ¿¾È¿¡ ¸µÄ¿´Â ¾î¶² ¸ðµâÀÌ ÇÁ·Î±×·¥¿¡ ÷°¡µÇ°í, ¾î¶² ¸ðµâÀº ºüÁ®¾ß µÇ´Â°¡¿¡ ´ëÇÑ Á¤º¸¸¦ ¶óÀ̺귯¸®·ÎºÎÅÍ ¾ò¾î³»Áö ¾Ê´Â´Ù. ¸µÄ¿´Â ´ÜÁö ÇÒ´çµÇÁö ¾ÊÀº ÁÖ¼Ò °ªÀÌ Á¦´ë·Î ÇÒ´çµÇµµ·Ï º¸À常 ÇÏ°í ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÔÀ¸·Î½á ¾î¶°ÇÑ °ÍÀÌ ¹Ýµå½Ã ¸®½ºÆ®¿¡ Ãß°¡µÇ¾î¾ß Çϴ°¡¸¦ °Ë»çÇÑ´Ù. ¸ðµç °øÀ¯ ¶óÀ̺귯¸®µéÀÇ ¹­À½À» ¸¸µé ¼öµµ ÀÖÁö¸¸ ´ë°³ÀÇ °æ¿ì °øÀ¯ ¶óÀ̺귯¸®´Â ¿©·¯ ´Ù¾çÇÑ ¸ðµâÀÌ ¸µÅ©µÈ °á°úÀÌ°í µû¶ó¼­ ¶óÀ̺귯¸®´Â ÃßÈÄ ½ÇÇà½Ã°£¿¡ ÇÊ¿äÇϱ⠶§¹®¿¡ ¶óÀ̺귯¸®µéÀ» ÇÑ ¹­À½À¸·Î ¸¸µå´Â ÀÏÀº µå¹°´Ù. ¾Æ¸¶µµ °øÀ¯ ¶óÀ̺귯¸®¶ó´Â ¸» º¸´Ùµµ °øÀ¯ °´Ã¼¶ó´Â ¸»ÀÌ ´õ ¾î¿ï¸± °ÍÀÌ´Ù.(±×·³¿¡µµ ºÒ±¸ÇÏ°í °øÀ¯ °´Ã¼¶ó´Â ¿ë¾î¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.)

     

4. ¶óÀ̺귯¸®ÀÇ ÇüÅÂ

    ¾Õ¿¡¼­ ¹Ì¸® ¾ð±ÞÇßÁö¸¸, ¸®´ª½º¿¡´Â Á¤Àû ¶óÀ̺귯¸®¿Í °øÀ¯ ¶óÀ̺귯¸®, µÎ  °¡ÁöÀÇ ÇüÅÂÀÇ ¶óÀ̺귯¸®°¡ Á¸ÀçÇÑ´Ù. Á¤Àû ¶óÀ̺귯¸®µéÀº ar(1)À̶ó´Â À¯Æ¿¸®Æ¼¸¦ ÀÌ¿ëÇØ ¿©·¯ ¸ðµâµéÀ» ÇϳªÀÇ ÆÄÀÏ¿¡ ¸ð¾Æ³õ°í ranlib(1) À̶ó´Â À¯Æ¿¸®Æ¼¸¦ ÀÌ¿ëÇØ °¢ ¸ðµâµéÀ» »öÀÎÇØ ³õÀº ÇüŸ¦ Áö´Ï°í ÀÖ´Ù. ÀÌ·¯ÇÑ ¸ðµâµéÀº ´ë°³ ÆÄÀÏÀÇ À̸§ÀÌ .a·Î ³¡³ª´Â ÆÄÀÏ¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ¸µÄ¿´Â ÆÄÀÏÀÇ À̸§ÀÌ .a·Î ³¡³ª´Â ¶óÀ̺귯¸®¸¦ ¸¸³ª°Ô µÇ¸é ÆÄÀÏÀÇ ¾Õ¿¡ ¼ö·ÏµÇ¾î ÀÖ´Â ¸ðµâµéÀÇ ¸®½ºÆ®¸¦ µÚÁ®¼­ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ ÄÚµåÀÇ ¾ÆÁ÷ Á¤ÇØÁöÁö ¾ÊÀº ÁÖ¼Ò °ªµéÀ» »ç¿ëÇÏ´Â ¸ðµâµéÀÇ ÁÖ¼Ò °ªÀ¸·Î ¹Ù²Ù°í º» ÇÁ·Î±×·¥¿¡ »ç¿ëµÇ´Â ¸ðµâµéÀ» ´õÇÏ°Ô µÈ´Ù.

    ¹Ý´ë·Î, °øÀ¯ ¶óÀ̺귯¸®ÀÇ °æ¿ì´Â ÇϳªÀÇ ÆÄÀÏÀ̶ó±â º¸´Ù´Â Ư¼öÇÑ ÄÚµå·Î Ç¥½ÃµÈ Àç ÇÒ´ç°¡´ÉÇÑ °´Ã¼¶ó°í º¼ ¼ö ÀÖ´Ù. ¾Õ¿¡¼­µµ ¾ð±ÞÇßµíÀÌ ¸µÄ¿ ld(1)´Â ÇÁ·Î±×·¥ Äڵ忡 Á÷Á¢ ¸ðµâÀ» ´õÇÏÁö ¾Ê°í ¶óÀ̺귯¸®¿¡¼­ Á¦°øÇÏ´Â ½Äº°ÀÚ¸¦ °ñ¶ó¼­ ÇÁ·Î±×·¥ Äڵ忡 »ðÀÔÇÏ°Ô µÈ´Ù. ÀÌ´ë ¸ðµâÀÇ ÄÚµå´Â º» ÇÁ·Î±×·¥¿¡ »ðÀÔµÇÁö ¾ÊÀ¸¸ç ¸¶Ä¡ º» ÇÁ·Î±×·¥¿¡ ÀÌ¹Ì »ðÀԵǾî Àִ ô ÇÏ°Ô µÈ´Ù. ¸µÄ¿ ld(1)´Â ÆÄÀÏÀÇ ³¡ÀÌ .so·Î ³¡³ª´Â °ÍÀ» º¸¸é °øÀ¯ ¶óÀ̺귯¸®·Î ÀνÄÇÑ´Ù.

 

5. ¸®´ª½º¿¡¼­ÀÇ ¸µÅ© ÀÛ¾÷

     ¸ðµç ÇÁ·Î±×·¥Àº ½ÇÇà½ÃÅ°±â À§ÇØ ¿¬°áµÈ ¸ñÀû ¸ðµâµé·Î ÀÌ·ç¾îÁ® ÀÖ´Ù. ÀÌ·¸°Ô ¸ðµâµéÀ» ¿¬°áÇÏ´Â ¿ªÇÒÀ» ¼öÇàÇÏ´Â ÇÁ·Î±×·¥À» ¸®´ª½º ¸µÄ¿ ld(1) À̶ó°í ÇÑ´Ù.

    ld(1) Àº ½ÇÇà½Ã ¿©·¯ °¡Áö ¿É¼ÇÀ» Á¦°øÇϴµ¥ º» ±â»ç¿¡¼­´Â ÆíÀǸ¦ À§ÇØ ¶óÀ̺귯¸® »ç¿ë¿¡ °üÇÑ ¿É¼Ç¸¸À» ´Ù·çµµ·Ï ÇÏ°Ú´Ù. ld(1) Àº »ç¿ëÀÚ°¡ Á÷Á¢ ½ÇÇà½Ãų ¼ö´Â ¾øÀ¸¸ç gcc(1) ¿Í °°Àº ÄÄÆÄÀÏ·¯°¡ ÄÄÆÄÀÏÀÇ ¸¶Áö¸· ´Ü°è¿¡¼­ ½ÇÇà½ÃÅ°°Ô µÈ´Ù. ld(1)ÀÇ ½ÇÇà ¹æ½ÄÀ» ÀÌÇØÇÔÀ¸·Î½á ¸®´ª½º¿¡¼­ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀ» Á» ´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

    ld(1)Àº ±× ÀÚüÀÇ ÀûÇÕÇÑ ¼öÇà Á¶°ÇÀ¸·Î ÇÁ·Î±×·¥¿¡ ¸µÅ©µÉ ¿ÀºêÁ§Æ®ÆÄÀÏÀÇ ¸®½ºÆ®¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¿ì¸®°¡ ¾Õ¿¡¼­ À̾߱âÇÑ  Á¶°Ç(°øÀ¯ ¶óÀ̺귯¸®´Â .so·Î ³¡³ª°í Á¤Àû ¶óÀ̺귯¸®´Â .a·Î ³¡³­´Ù.)À» µû¸£±â¸¸ ÇÑ´Ù¸é ld(1)Àº ¾î¶°ÇÑ ¼ø¼­·Î¶óµµ ¸®½ºÆ®¿¡ ÀÖ´Â ¿ÀºêÁ§Æ®ÆÄÀϵéÀ» ÀоîµéÀÏ ¼ö ÀÖ´Ù.

    ±×·¯³ª ½ÇÁ¦·Î '¾î¶°ÇÑ ¼ø¼­·Î¶óµµ' ¶ó´Â ¿ë¾î°¡ ²À ¸ÂÁö´Â ¾Ê´Â´Ù. ld(1)Àº ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏ´Â ¼ø°£¿¡ ÁÖ¼Ò °ªÀ» °áÁ¤Çϴµ¥ ÇÊ¿äÇÑ ¸ðµâ¸¸À» Æ÷ÇÔÇϱ⠶§¹®¿¡ µÚ¿¡ Æ÷ÇԵǴ ¸ðµâ¿¡ ÀÇÇØ °áÁ¤µÇ¾î¾ß ÇÒ ÁÖ¼Ò °ªÀº ±×´ë·Î °áÁ¤ÀÌ µÇÁö ¾ÊÀº »óÅ·Π³²°Ô µÈ´Ù. µû¶ó¼­ ½ÇÁ¦·Î ¾î¶°ÇÑ ¼ø¼­·Î¶óµµ ¸ðµâÀ» ÀÐ¾î µéÀÏ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù.

    ¹Ý¸é¿¡ ld(1)Àº ¿É¼Ç -I °ú -LÀ» ÀÌ¿ëÇÏ¿© Ç¥ÁØ ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖ´Ù.

    ±×·¯³ª Ç¥ÁØ ¶óÀ̺귯¸®¶ó°í Çؼ­ ´Ù¸¥ °ÍÀº º°·Î ¾ø´Ù. ´ÜÁö Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ °æ¿ì´Â ¹Ì¸® Á¤ÇØÁø Àå¼Ò¿¡¼­ ¸ðµâÀ» ã´Â ´Ù´Â °Í¸¸ÀÌ ´Ù¸¦ »ÓÀÌ´Ù.

    ¶óÀ̺귯¸®´Â ±âº»ÀûÀ¸·Î /lib À̳ª /usr/lib µð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù. -L ¿É¼ÇÀº »ç¿ëÀÚ°¡ ±âº» µð·ºÅ丮 ÀÌ¿Ü¿¡ ´Ù¸¥ µð·ºÅ丮¸¦ ±âº» µð·ºÅ丮(±âº»ÀûÀ¸·Î ¶óÀ̺귯¸®¸¦ ã´Â µð·ºÅ丮) ¸ñ·Ï¿¡ Ãß°¡½ÃÄÑ ÁØ´Ù. »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.

    < -L Ãß°¡ÇÏ°íÀÚ ÇÏ´Â µð·ºÅ丮 À̸§ >

    Ç¥ÁØ ¶óÀ̺귯¸®´Â

    < -I ÀûÀçµÉ ¶óÀ̺귯¸®ÀÇ À̸§ >

    °ú °°Àº ¹æ½ÄÀ¸·Î °áÁ¤µÈ´Ù. ±×·¯¸é ld(1)Àº ¼ø¼­´ë·Î ÇØ´çµÇ´Â µð·ºÅ丮¿¡¼­ libName.so ÆÄÀÏÀ» ã´Â´Ù.(ÀûÀçµÉ ¶óÀ̺귯¸®ÀÇ À̸§ÀÌ libName À̶ó°í °¡Á¤) ¸¸¾à ãÁö ¸øÇÑ´Ù¸é ±× ´ÙÀ½À¸·Î libName.a¸¦ ã°Ô µÈ´Ù.

    ¸¸¾à ld(1) ÀÌ libName.so ÆÄÀÏÀ» ã°Ô µÇ¸é, ld(1)Àº ÁöÁ¤µÈ ¶óÀ̺귯¸®¸¦ ¸µÅ© ½ÃÅ°°Ô µÈ´Ù. ±×·¯³ª libName.so´Â ãÁö ¸øÇÏ°í libName.a¸¦ ã¾ÒÀ» °æ¿ì´Â ¿©±â¼­ ¾òÀº ¸ðµâ·Î ÁÖ¼Ò °ªÀ» °áÁ¤ÇÏ°Ô µÈ´Ù.

     

6. °øÀ¯ ¶óÀ̺귯¸®ÀÇ µ¿Àû ¸µÅ·°ú ·Îµù

    µ¿Àû ¸µÅ·Àº ½ÇÇà ÆÄÀÏÀ» ¸Þ¸ð¸®¿¡ ÀûÀçÇÏ´Â ¼ø°£¿¡ /lib/ld-linux.so ¶ó´Â Ư¼öÇÑ ¸ðµâ¿¡ ÀÇÇØ ¼öÇàµÈ´Ù.(»ç½Ç ÀÌ ÀÚüµµ °øÀ¯ ¶óÀ̺귯¸®ÀÌ´Ù.)

    ½ÇÁ¦·Î µ¿Àû ¶óÀ̺귯¸®¿Í ¸µÅ©Çϱâ À§Çؼ­ µÎ °³ÀÇ ¸ðµâÀÌ ÀÖ´Ù. /lib/ld.so(¿¹Àü a.out Çü½ÄÀÇ ½ÇÇàÆ÷¸Ë¿¡¼­ »ç¿ëÇÑ´Ù.) ¿Í /lib/ld-linux.so(ÀÌ°ÍÀº EFL ½ÇÇàÆ÷¸Ë¿¡¼­ »ç¿ëÇÑ´Ù.)ÀÌ´Ù.

    ÀÌ·¯ÇÑ ¸ðµâµéÀº ÇÁ·Î±×·¥ÀÌ µ¿ÀûÀ¸·Î ¸µÅ©µÉ ½Ã±â¿¡´Â ¹Ýµå½Ã ·ÎµùµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. À̰͵éÀÇ À̸§Àº Ç¥ÁØÀûÀÎ °ÍÀÌ´Ù. (±×·¡¼­ À̰͵éÀ» /lib µð·ºÅ丮¿¡¼­ ¿Å±â¸é ¾ÈµÇ°í À̰͵éÀÇ À̸§µµ º¯°æµÇ¸é ¾ÈµÈ´Ù.) ¸¸¾à /lib/ld-linux.so ¶ó´Â À̸§À» º¯°æÇÑ´Ù¸é ÀÌ °øÀ¯ ¶óÀ̺귯¸®´Â »ç¿ëÇÏ´Â ¾î¶°ÇÑ ÇÁ·Î±×·¥µµ ÀÚµ¿ÀûÀ¸·Î ½ÇÇàÀÌ ¸ØÃß°Ô µÈ´Ù. ¿Ö³ÄÇϸé ÀÌ ¸ðµâÀº ½ÇÇà½Ã¿¡ ¾ÆÁ÷ Çؼ®µÇÁö ¾ÊÀº ¸ðµç ÂüÁ¶ À§Ä¡¸¦ Çؼ®ÇÏ´Â ÀÏÀ» ¸Ã°í Àֱ⠶§¹®ÀÌ´Ù.

    /lib/ld.so ¸ðµâÀº /etc/ld.so.cache ÆÄÀÏÀ» »ç¿ëÇÑ´Ù. ÀÌ ÆÄÀÏÀº ÇØ´ç ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏ´Â ´ëºÎºÐÀÇ ½ÇÇàÆÄÀÏÀ» °¡¸®Å°°í ÀÖ´Ù. ÀÌ°Í¿¡ ´ëÇؼ­´Â ³ªÁß¿¡ ´Ù½Ã ¸»ÇÒ °ÍÀÌ´Ù.

 

7. soname, °øÀ¯ ¶óÀ̺귯¸®ÀÇ ¹öÀü, ȣȯ¼º

    ÀÌÁ¦ºÎÅÍ °øÀ¯ ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÀÌÇØÇϱ⠾î·Á¿î ÁÖÁ¦¿¡ ´ëÇؼ­ À̾߱âÇÏ·Á°í ÇÑ´Ù. ¹öÀüÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. ÀÌ ±â»ç¸¦ ÀÐÀº ºÐµéÀº Á¾Á¾ 'library libX11.so.3 not found' ¶ó´Â ¿¡·¯¸Þ¼¼Áö¸¦ ¹ß°ßÇÏ°ï ÇßÀ» °ÍÀÌ´Ù. ±×·¯³ª ÇöÀç ÀÚ½ÅÀÇ ¶óÀ̺귯¸® ¹öÀüÀ» libX.so.6 ÀÎ °ÍÀ» º¸°í ¸Å¿ì ´çȤÇßÀ» °ÍÀÌ°í ÀÌ·¯ÇÑ ¿¡·¯ ¸Þ½ÃÁö¿¡ ´ëÇؼ­ ¾î¶»°Ô ó¸®ÇØ¾ß ÇÒÁö ³­°¨ÇØ ÇÏ´Â °æ¿ì°¡ ÀÖÀ» °ÍÀÌ´Ù. ¾î°¼­ ld.so(8)ÀÌ libpepe.so.45.0.1°ú libpepe.so.45.22.3 Àº ¼­·Î ±³È¯ÇÒ ¼ö ÀÖ´Â ¹öÀüÀ¸·Î ÀÌÇØÇÏÁö¸¸ libpepe.so.46.22.3 Àº ±×·¸Áö ¸øÇÏ´Ù°í ÀνÄÇÏ´Â °ÍÀϱî?

    ¸®´ª½º¿¡¼­(¹°·Ð ´Ù¸¥ ¸ðµç ELF Çü½ÄÀ» °¡Áö´Â ¿î¿µÃ¼Á¦¿¡¼­µµ ¸¶Âù°¡ÁöÀÌÁö¸¸) ¶óÀ̺귯¸®µéÀº À̰͵éÀ» ±¸º°Çϴµ¥ ¿¬¼ÓµÈ ¹®ÀÚ¸¦ »ç¿ëÇÑ´Ù. ÀÌ°ÍÀÌ soname ÀÌ´Ù.

    sonameÀº ¶óÀ̺귯¸® ³»ºÎ¿¡ Æ÷ÇԵǾî ÀÖ°í ¿¬¼ÓµÈ ¹®ÀÚµéÀº ¶óÀ̺귯¸®µéÀ» ±¸¼ºÇÏ´Â ´ë»óÀÌ ¸µÅ©µÉ ¶§ °áÁ¤µÈ´Ù. °øÀ¯ ¶óÀ̺귯¸®°¡ ¸¸µé¾îÁú ¶§ ¿ì¸®´Â ld(1) ¿¡ -soname ¿É¼ÇÀ» ³Ñ°ÜÁÖ¾î¾ß ÇÑ´Ù. ¹°·Ð -soname ´ÙÀ½¿¡´Â ÀÌ ¹®ÀÚ¿­À» °ªÀ¸·Î ÁÖ¾î¾ß ÇÑ´Ù.

    µ¿Àû ·Î´õ´Â ¾î¶°ÇÑ ½ÇÇàÆÄÀÏÀÌ ½ÇÇàµÉ ¶§ ·Îµå µÇ¾îÁö°í ÀνĵǾî¾ß ÇÏ´Â °øÀ¯ ¶óÀ̺귯¸®¸¦ ÀνÄÇϱâ À§Çؼ­ ÀÌ ¹®ÀÚ¿­À» »ç¿ëÇÑ´Ù. ÀÌ °úÁ¤Àº ´ÙÀ½°ú °°´Ù. ¸ÕÀú ld-linux.so ´Â ÇÁ·Î±×·¥ÀÌ ¾î¶°ÇÑ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ°í ÇØ´ç soname ÀÌ ¹ºÁö °áÁ¤ÇÑ´Ù. ±×·± ´ÙÀ½ ÇØ´ç À̸§À» °¡Áö°í /etc/ld.so.cache¿¡¼­ ±× ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ÆÄÀÏÀÇ À̸§À» ¾ò¾î¿Â´Ù. ±×¸®°í ¶óÀ̺귯¸® ¾È¿¡ Á¸ÀçÇÏ´Â À̸§°ú ¿äûµÈ sonameÀ» ºñ±³ÇÑ´Ù. ¸¸¾à ¼­·Î µ¿ÀÏÇÏ´Ù¸é ±×°ÍÀ¸·Î ³¡ÀÌ´Ù. ±×·¯³ª ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é ¹ß°ßµÉ ¶§±îÁö °Ë»öÀ» ÇÏ°í ±×·¡µµ ¹ß°ßµÇÁö ¾Ê´Â´Ù¸é ¿¡·¯¸¦ ³½´Ù.

    ¸¸¾à ¶óÀ̺귯¸®°¡ ·ÎµåµÇ±â¿¡ ÀûÀýÇÑ °ÍÀ̶ó¸é sonameÀ» ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿Ö³ÄÇϸé ld-linux.so´Â ¿äûµÇ¾îÁø sonameÀÌ ¿ä±¸µÇ¾îÁú ÆÄÀÏ°ú ÀÏÄ¡ÇÑ´Ù°í È®½ÅÇϱ⠶§¹®ÀÌ´Ù. ¸¸¾à ÀÏÄ¡ÇÏÁö ¾Ê´Â °æ¿ì¶ó¸é º¸Åë ´«¿¡ ÀÍÀº 'library libXXX.so.Y not found'°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù. ã¾Æ¾ß ÇÏ´Â °ÍÀÌ sonameÀÌ°í ÇØ´ç sonameÀ» ÂüÁ¶ÇÒ ¶§ ÁÖ¾îÁö´Â ¿¡·¯¸Þ¼¼ÁöÀÎ °ÍÀÌ´Ù.

    ¿©±â¿¡¼­ ¿ì¸®´Â ¶óÀ̺귯¸® À̸§ÀÌ º¯°æµÇ°Å³ª Áö¼Ó¼º¿¡ ¹®Á¦°¡ ¹ß»ýÇÒ ´ë¿¡´Â È¥µ·À» ÀÏÀ¸Å³ ¼ÒÁö¸¦ °¡Áö°í ÀÖ´Ù. ±×·¯³ª Linux »çȸ¿¡´Â sonameÀ» ÇÒ´çÇϴµ¥ °ü·Ê°¡ Àֱ⠶§¹®¿¡ sonameÀ» Á¢±ÙÇϰųª sonameÀ» º¯°æÇÏ´Â °ÍÀ» ÁÁÀº »ý°¢ÀÌ ¾Æ´Ï´Ù.

    °ü·Ê»ó ¶óÀ̺귯¸®ÀÇ sonameÀº ¹Ýµå½Ã ÀûÀýÇÑ ¶óÀ̺귯¸®¿Í µ¿ÀÏÇØ¾ß ÇÏ°í ±×·¯ÇÑ ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽º¿©¾ß ÇÑ´Ù. ¸¸¾à ¶óÀ̺귯¸®°¡ º¯°æµÇ¾îÁø´Ù¸é ±×°ÍÀº ´ÜÁö ³»ºÎÀûÀ¸·Î ÀϾ´Â º¯È­¿¡ ±×ÃÄ¾ß ÇÏÁö ÀüüÀûÀÎ ÀÎÅÍÆäÀ̽º¿¡ ¿µÇâÀ» ¹ÌÃļ­´Â ¾ÈµÇ´Â °ÍÀÌ´Ù. Áï ±× ¶óÀ̺귯¸®¿¡ ´ëÇÑ ÇÔ¼ö³ª º¯¼ö ±×¸®°í ÇÔ¼ö¿¡ ´ëÇÑ ÀÎÀÚÀÇ ¼ö µî¿¡ ¿µÇâÀ» ¾ÈµÈ´Ù´Â °ÍÀÌ´Ù. ÀÌ·² °æ¿ì¿¡ ±¸¹öÀü°ú ½Å¹öÀü »çÀÌ¿¡ »óÈ£±³È¯ÀûÀÌ µÇ¾î¾ß ÇÑ´Ù. Áï ÀüüÀûÀ¸·Î´Â º¯ÇÔÀÌ ¾ø°í º¯°æµÈ °ÍÀº ÀûÀº ºÎºÐ¿¡¼­ ÀÌ·ç¾îÁüÀ¸·Î½á ¼­·Î°£¿¡ ±³È¯ Áï ȣȯ¼ºÀÌ º¸ÀåµÈ´Ù´Â °ÍÀÌ´Ù. ÀûÀº ºÎºÐÀÇ º¯È­·Î minor ¼ýÀÚÀÇ º¯°æÀÌ ÀÌ·ç¾îÁö´Â °æ¿ì°¡ ¸¹´Ù. Áï ÀÌ°ÍÀº soname ÀÚüÀûÀ¸·Î´Â º¯È­°¡ ¾ø´Ù´Â °ÍÀÌ´Ù. ±×¸®°í ÇØ´ç ¶óÀ̺귯¸®´Â ¾î¶°ÇÑ Áß´ëÇÑ ¹®Á¦¾øÀÌ ±³Ã¼ÇÒ ¼ö ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù.

    ±×·¯³ª ÇÔ¼ö¸¦ ´õÇϰųª Á¦°ÅÇϰųª ÇÏ´Â °æ¿ì µî°ú °°Àº ÀÎÅÍÆäÀ̽º°¡ º¯°æµÇ´Â °æ¿ì¿¡´Â »óÈ£ ±³È¯ÀÌ ºÒ°¡´ÉÇÏ´Ù´Â °ÍÀ» ½±°Ô ÁüÀÛÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿¹¸¦ µé¸é libX11.so.3 °ú libX11.so.6 »çÀ̸¦ º¸¸é ¾Ë ¼ö ÀÖ´Ù. X11R5 ¿¡¼­ X11R6 ·Î ¾÷±×·¹ÀÌµå µÇ¸é¼­ »õ·Î¿î ¸¹Àº ÇÔ¼öµéÀÌ Á¤ÀǵǾîÁ³°í ÀÎÅÍÆäÀ̽º¿¡µµ º¯°æÀÌ °¡ÇØÁ³´Âµ¥ ÀÌ°Íµé »çÀÌ¿¡ »óÈ£±³È¯À̶ó´Â °ÍÀº Å« ¹®Á¦¸¦ À¯¹ßÇÒ ¼ö ÀÖ°Ô µÉ °ÍÀÌ´Ù. X11R6-v3.1.2¿¡¼­ X11R6-v3.1.3°ú °°Àº º¯È­´Â ÀÎÅÍÆäÀ̽º¿¡´Â º¯È­°¡ ¾ø°í ±× ¶óÀ̺귯¸®µµ °°Àº sonameÀ» °¡Áö°í ÀÖ´Ù. ÀÌ °æ¿ìµµ ±¸ ¹öÀüÀ» À¯ÁöÇϱâ À§Çؼ­´Â ´Ù¸¥ À̸§À» ÁÖ¾î¾ß ÇÏ´Â °ÍÀº ´ç¿¬ÇÏ´Ù.(ÀÌ·¯ÇÑ ÀÌÀ¯·Î ¶óÀ̺귯¸®ÀÇ À̸§¿¡ soname ¿¡ º¸¿©Áö´Â ÁÖ¾îÁø ¹øÈ£°¡ ÀÖ°í ±× ¿Ü¿¡ ÀüüÀûÀÎ ¹öÀü ¼ýÀÚ°¡ ³ªÅ¸³ª´Â °ÍÀÌ´Ù.)

 

8. ldconfig(8)

    /etc/ld.so.cache ¶ó´Â ÆÄÀÏÀ» ¾ð±ÞÇÑ °ÍÀÌ Àִµ¥ ÀÌ°ÍÀº ¶óÀ̺귯¸®°¡ ¾î¶°ÇÑ ÆÄÀÏ¿¡ Æ÷ÇԵǾîÁ® ÀÖ´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº Ç¥À²¼ºÀ» À§Çؼ­ ¹ÙÀ̳ʸ® ÆÄÀÏ·Î ¸¸µé¾îÁö°í ldconfig(8) À¯Æ¿¸®Æ¼¿¡ ÀÇÇؼ­ ¸¸µé¾îÁø´Ù. ldconfig(8)Àº /etc/ld.so.conf¿¡ ÁöÁ¤µÈ µð·ºÅ丮¸¦ ã¾Æ´Ù´Ï¸é¼­ ¹ß°ßµÈ °¢°¢ÀÇ µ¿Àû ¶óÀ̺귯¸®µé¿¡ ´ëÇؼ­ ±× ¶óÀ̺귯¸®ÀÇ soname ¿¡ ÀÇÇؼ­ ºÒ¸®¾îÁö´Â ½Éº¼¸¯ ¸µÅ©µéÀ» ¸¸µé¾î³½´Ù. ld.so°¡ ÆÄÀÏÀÇ À̸§À» ¾òÀ¸·Á°í ÇÒ ¶§ ÀÌ°ÍÀº sonameÀ» ¹ß°ßÇÑ ÆÄÀÏÀÇ µð·ºÅ丮¸¦ ¼±ÅÃÇÏ´Â ±×·¯ÇÑ ÀÏÀ» ÇÑ´Ù. ±×¸®°í ÀÌ·¸°Ô ÇÔÀ¸·Î¼­ ¿ì¸®°¡ ¶óÀ̺귯¸®¸¦ Ãß°¡ÇÒ ¶§¸¶´Ù ldconfig(8)¸¦ ¼öÇàÇÒ ÇÊ¿ä´Â ¾ø°Ô µÇ´Â °ÍÀÌ´Ù. ldconfig´Â ¸®½ºÆ®¿¡ »õ·Î¿î µð·ºÅ丮¸¦ ¸¸µé¾î ³Î¶§¸¸ ½ÇÇà½ÃÅ°¸é µÈ´Ù.

 

9. µ¿Àû ¶óÀ̺귯¸® ¸¸µé±â

    µ¿Àû ¶óÀ̺귯¸®¸¦ ¸¸µé±â Àü¿¡ °í·ÁÇÒ »çÇ×ÀÌ ÀÖ´Ù. ±×°ÍÀº ¹Ù·Î ÀÌ·¸°Ô µ¿Àû ¶óÀ̺귯¸®·Î ¸¸µé¾úÀ» ¶§ À¯¿ëÇÑ°¡ ÇÏ´Â °ÍÀÌ´Ù. µ¿Àû ¶óÀ̺귯¸®´Â ¿©·¯ °¡Áö ÀÌÀ¯·Î ½Ã½ºÅÛ¿¡ ºÎÇϸ¦ ÁÖ°Ô µÈ´Ù. ÇÁ·Î±×·¥ÀÇ ·ÎµùÁß¿¡´Â ¿©·¯ °¡Áö ´Ü°è°¡ ÀÖ´Ù. ù°´Â ¸ÞÀÎ ÇÁ·Î±×·¥À» ·ÎµùÇÏ´Â °ÍÀÌ°í ±× ¿Ü¿¡ ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ´Â °¢ µ¿Àû ¶óÀ̺귯¸®¸¦ ·ÎµùÇÑ´Ù.

    µ¿Àû ¶óÀ̺귯¸®´Â ÀçÇÒ´çÀÌ °¡´ÉÇÑ ÄÚµå·Î ¸¸µé¾îÁ®¾ß ÇÑ´Ù. ÀÌ°ÍÀº ´ç¿¬ÇÑ °ÍÀ¸·Î ÇÁ·Î¼¼½º¸¦ À§Çؼ­ °¡»ó ÁÖ¼Ò °ø°£ ¾È¿¡ ÇÒ´çµÈ ÁÖ¼Ò°¡ ÇØ´ç ÇÁ·Î±×·¥ÀÌ ·ÎµåµÉ ¶§±îÁö ¾Ë ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â ¶óÀ̺귯¸®ÀÇ ·ÎµùÀ§Ä¡¸¦ À¯ÁöÇϱâ À§Çؼ­ ·¹Áö½ºÅ͸¦ ¿¹¾àÇØ ³õ¾Æ¾ß ÇÑ´Ù. ±×¸®°í °á°úÀûÀ¸·Î ÄÚµå ÃÖÀûÈ­¿¡¼­ ÀÌ°Í ¶§¹®¿¡ ·¹Áö½ºÅÍ Çϳª¸¦ »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ·¯ÇÑ °æ¿ì´Â »ç¼ÒÇÏ´Ù°í º¼ ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé ÀÌ·¯ÇÑ °Í ¶§¹®¿¡ ³ªÅ¸³ª´Â ½Ã½ºÅÛÀÇ ºÎÇÏ´Â ´ëºÎºÐÀÇ °æ¿ì ´Ù¸¥ ºÎÇϵéÀÇ 5%ÀÌÇÏÀ̱⠶§¹®ÀÌ´Ù.

    µ¿Àû ¶óÀ̺귯¸®°¡ ÀûÀýÇÑ °ÍÀÌ µÇ·Á¸é ´Ù¸¥ ¿©·¯ ÇÁ·Î±×·¥¿¡¼­ ÀÚÁÖ »ç¿ëµÇ¾î¾ß ÇÑ´Ù. Áï ÀÌ·¸°Ô ÇÏ¸é ½ÃÀÛÇÑ ÇÁ·Î¼¼½º°¡ ¾ø¾îÁø ÀÌÈÄ¿¡µµ ±× ¶óÀ̺귯¸®¿¡ ´ëÇÑ TEXT°¡ ´Ù½Ã ·ÎµùµÇ´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ´Ù. ´Ù½Ã ·ÎµùÀÌ ¾ÈµÇ´Â ÀÌÀ¯´Â ÇØ´ç ¶óÀ̺귯¸®´Â ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÏ°í Àֱ⠶§¹®¿¡ ¸Þ¸ð¸®¿¡¼­ ¾ø¾Ö ¹ö¸®¸é ¾ÈµÇ±â ¶§¹®¿¡ Ç×»ó ¸Þ¸ð¸®°¡ ³²¾ÆÀ־ ´Ù½Ã ºÒ·¯µéÀÏ ÇÊ¿ä°¡ ¾ø¾îÁø´Ù.

    µ¿Àû ¶óÀ̺귯¸®ÀÇ ÁÁÀº ¿¹´Â C Ç¥ÁØ ¶óÀ̺귯¸®ÀÌ´Ù. (ÀÌ ¶óÀ̺귯¸®µéÀº ´ëºÎºÐÀÇ C ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴµ¥ »ç¿ë µÇ¾îÁø´Ù.)Æò±ÕÀûÀ¸·Î ¸ðµç ÇÔ¼öµéÀÌ ÀÚÁÖ »ç¿ëµÇ¾îÁø´Ù.

    Á¤Àû ¶óÀ̺귯¸®ÀÇ °æ¿ì¿¡ Á»Ã³·³ µå¹°°Ô »ç¿ëÇÏ´Â ÇÔ¼ö¸¦ Æ÷ÇÔÇÒ ¶§ À¯¸®ÇÏ´Ù. Áï ÇØ´ç ÇÔ¼ö´Â ÀÌ°ÍÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â ¸ðµâ¿¡ Àֱ⠶§¹®¿¡ ³»°¡ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é ¸µÅ©¸¦ ½ÃÅ°Áö ¾ÊÀ¸¸é µÈ´Ù.

 

    9.1  ¼Ò½ºÄÚµåÀÇ ÄÄÆÄÀÏ

    ¼Ò½ºÀÇ ÄÄÆÄÀÏÀº ÇÑ °¡Áö¸¸ Á¦¿ÜÇÏ°í´Â ´ëºÎºÐÀÇ ¼Ò½º¸¦ ÄÄÆÄÀÏÇÏ´Â °æ¿ì¿Í °°Àº Çü½ÄÀ¸·Î ¼öÇàµÈ´Ù. Â÷ÀÌÁ¡À̶ó¸é ÇÁ·Î¼¼½ºÀÇ °¡»ó ÁÖ¼Ò °ø°£ ¾ÈÀÇ ´Ù¸¥ Áö¿ª¿¡ ·ÎµåµÉ ¼ö ÀÖµµ·Ï ÇÏ´Â Äڵ带 ¸¸µé±â À§Çؼ­ '-f PIC' -PIC(Position Independent Code)- ¶ó´Â ¿É¼ÇÀ» »ç¿ëÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù.

    µ¿Àû ¶óÀ̺귯¸®¿¡¼­ ÀÌ ´Ü°è´Â ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é  Á¤ÀûÀ¸·Î ¸µÅ©µÈ ÇÁ·Î±×·¥¿¡¼­´Â ¶óÀ̺귯¸® ¿ÀºêÁ§Æ®ÀÇ À§Ä¡°¡ ¸µÅ©½Ã¿¡ °áÁ¤µÇ°í ±×·¡¼­ °íÁ¤µÈ ½Ã°£ÀÌ µÇ¾î ¹ö¸®±â ¶§¹®ÀÌ´Ù. ¿¹ÀüÀÇ a.out ½ÇÇàÇü½Ä¿¡¼­´Â ÀÌ·¯ÇÑ ´Ü°è°¡ ºÒ°¡´ÉÇß´Ù. ¿Ö³ÄÇÏ¸é °¢ °øÀ¯ ¶óÀ̺귯¸®°¡ °¡»óÁÖ¼ÒÀÇ °ø°£ ¾È¿¡ °íÁ¤µÈ À§Ä¡¸¦ °¡Áö°Ô ¸¸µé¾îÁ³±â ¶§¹®ÀÌ´Ù. °á°úÀûÀ¸·Î °¡»ó¸Þ¸ð¸®ÀÇ ¿À¹ö·¡ÇÎµÈ Áö¿ª¿¡ ·ÎµåµÈ µÎ ¶óÀ̺귯¸®´Â »ç¿ëÇÏ±æ ¿øÇÏ´Â ÇÁ·Î±×·¥¿¡¼­´Â ¾î¶°ÇÑ °æ¿ì¿¡´Â Ãæµ¹ÀÌ ¹ß»ýÇÏ°Ô µÇ¾ú´Ù. ÀÌ°ÍÀº ¶óÀ̺귯¸®µéÀÇ ¸®½ºÆ®¸¦ À¯ÁöÇؾ߸¸ ÇÏ´Â °á°ú¸¦ ¸¸µé¾ú´Ù. Áï µ¿Àû ¶óÀ̺귯¸®·Î ¸¸µé±â¸¦ ¿øÇÑ´Ù¸é ÇØ´ç ¶óÀ̺귯¸®°¡ ¾îµð¿¡¼­ ¾îµð±îÁö »ç¿ëÇÑ´Ù´Â °ÍÀ» ¼±¾ðÇÏ´Â ºÎºÐÀÌ ¹Ýµå½Ã ÇÊ¿äÇÏ°Ô µÇ¾îÁø °ÍÀÌ°í ÀÌ ¿µ¿ªÀ» ´Ù¸¥ »ç¶÷µéÀÌ »ç¿ëÇÏ¸é ¾ÈµÇ°Ô µÈ °ÍÀÌ´Ù.

    ±×·¸´Ù¸é ¿ì¸®°¡ ÀÌÀü¿¡ ¾ð±ÞÇÑ °Í¿¡ µû¸£¸é °ø½ÄÀûÀÎ ¸®½ºÆ®¿¡ µ¿Àû ¶óÀ̺귯¸®¸¦ µî·ÏÇÏ´Â °ÍÀÌ ÇÊ¿ä¾ø°Ô µÈ °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é ¶óÀ̺귯¸®´Â ·ÎµùÀÌ µÇ¾îÁú ¶§ ·ÎµåµÉ À§Ä¡¸¦ °áÁ¤ÇÏ°Ô µÇ±â ¶§¹®ÀÌ´Ù. ÀÌ°ÍÀº Äڵ带 À§Ä¡Á¶Á¤ÀÌ °¡´ÉÇÏ°Ô ¸¸µé¾ú±â ¶§¹®¿¡ °¡´ÉÇÑ ÀÏÀÌ´Ù.

     

    9.2  ¶óÀ̺귯¸®ÀÇ ¿ÀºêÁ§Æ®¸¦ ¸µÅ©Çϱâ

    ¸ðµç °´Ã¼¸¦ ÄÄÆÄÀÏ ÇÑ ÈÄ¿¡ µ¿ÀûÀÎ ·ÎµùÀÌ °¡´ÉÇÑ ¿ÀºêÁ§Æ®ÆÄÀÏ·Î ¸¸µé±â À§ÇÑ Æ¯º°ÇÑ ¿É¼ÇÀÌ ÇÊ¿äÇÏ´Ù.

    gcc -shared -o libName.so.xxx.yyy.zzz -Wl, -soname, libName.so.xxx

    ÁüÀÛÇÒ ¼ö ÀÖµíÀÌ °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µé¾î³»´Â ¿É¼ÇÀÌ º¸ÀÌ´Â °ÍÀ» Á¦¿ÜÇÏ°í´Â º¸ÅëÀÇ ¸µÅ©°úÁ¤Ã³·³ º¸ÀδÙ.
    ÇϳªÇϳª È®ÀÎÇغ¸ÀÚ.

    -shared

    ÀÌ°ÍÀº °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µé¾î¶ó ÇÏ´Â ¿É¼ÇÀÌ´Ù. ±×·¡¼­ ¶óÀ̺귯¸®¿¡ °ü·ÃµÈ Ãâ·ÂÆÄÀÏ¿¡ ½ÇÇà °¡´ÉÇÑ ÇüÅ°¡ µÇ´Â °ÍÀÌ´Ù.

    -o libName.so.xxx.yyy.zzz

    ÃÖÁ¾ÀûÀÎ Ãâ·ÂÆÄÀÏÀ̸§ÀÌ´Ù. À̸§À» Áþ´Âµ¥´Â º¸ÅëÀÇ °ü·Ê¸¦ µû¸¦ ÇÊ¿ä´Â ¾øÁö¸¸ ÀÌ°ÍÀº Ç¥ÁØÀûÀ¸·Î °³¹ß¿¡ »ç¿ëµÇ±â¸¦ ¿øÇÑ´Ù¸é °ü·Ê¸¦ µû¸£´Â °ÍÀÌ ÁÁ´Ù.

    Wl, -soname, libName.so.xxx

    ÀÌ -W1¿É¼ÇÀº gcc(1)°¡ ÄÞ¸¶·Î ºÎºÐµÈ ´ÙÀ½ ¿É¼ÇµéÀ» ¸µÄ¿¿¡°Ô ¾Ë·ÁÁÖ±â À§ÇÑ °ÍÀÌ´Ù. ÀÌ°ÍÀº gcc(1)°¡ ld(1)¿¡°Ô ¿É¼ÇÀ» ³Ñ°ÜÁÖ±â À§ÇÑ ¹æ¹ýÀÌ´Ù. ÀÌ ¿¹¿¡¼­´Â ¸µÄ¿¿¡°Ô ´ÙÀ½°ú °°Àº ¿É¼ÇÀ» ³Ñ°ÜÁØ °ÍÀÌ´Ù.

    -soname libName.so.xxx

    ÀÌ ¿É¼ÇÀº ¶óÀ̺귯¸®¿¡ ´ëÇÑ sonameÀ» °íÁ¤½ÃÅ°´Â °ÍÀÌ´Ù. ±×¸®°í ÇÊ¿äÇÑ ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­´Â ÀÌ sonameÀ» »ç¿ëÇؾ߸¸ ÇÑ´Ù.

     

    9.3 ¶óÀ̺귯¸®¸¦ ¼³Ä¡Çϱâ

    ÀÌ¹Ì °ü·ÃµÈ ½ÇÇàÆÄÀÏÀ» °¡Áö°í ÀÖ°Ô µÇ¾ú´Ù. ÀÌÁ¦´Â ÀÌ°ÍÀ» ÀûÀýÇÑ Àå¼Ò¿¡ ¼³Ä¡ÇÏ°í »ç¿ëÇϱ⸸ ÇÏ¸é µÈ´Ù. »õ·Î¿î ¶óÀ̺귯¸®¸¦ ¿øÇÏ´Â ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇϱâ À§Çؼ­ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.

    gcc -o program libName.so.xxx.yyy.zzz

    ¶Ç´Â ¸¸¾à ¶óÀ̺귯¸®°¡ /usr/lib¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ´Ü¼øÈ÷ ´ÙÀ½°ú °°ÀÌ ÇÏ´Â °Í¸¸À¸·Î ÃæºÐÇÏ´Ù.

    gcc -o program -lName

    (¸¸¾à /usr/local/lib¿¡ ÀÖ´Ù¸é '-L/usr/local/lib'¶ó´Â °ÍÀ» Ãß°¡ ½ÃÄÑÁÖ¸é µÈ´Ù.)

    ¶óÀ̺귯¸®¸¦ ¼³Ä¡Çϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

    ¶óÀ̺귯¸®¸¦ /lib ³­ ¶Ç´Â /usr/lib ¿¡ º¹»çÇÑ´Ù. ¸¸¾à ´Ù¸¥ Àå¼Ò¿¡ º¹»çÇϱâ·Î Çß´Ù¸é(¿¹¸¦ µé¸é /usr/local/lib) ¸µÄ¿ÀÎ ld(1)°¡ ÀÚµ¿ÀûÀ¸·Î ¸µÅ©ÇÒ ¼ö´Â ¾øÀ» °ÍÀÌ´Ù. libName.so.xxx.yyy.zzz·ÎºÎÅÍ libName.so.xxx ¶ó´Â ½Éº¼¸¯¸µÅ©¸¦ ¸¸µé±â À§Çؼ­ ldconfig(1)À» ¼öÇàÇÑ´Ù. ÀÌ ´Ü°è¿¡¼­ ¸¸¾à ÀÌÀü´Ü°è°¡ È®½ÇÈ÷ ¼öÇàµÇ¾îÁ³´Ù¸é ÀÌ ¶óÀ̺귯¸®´Â µ¿Àû ¶óÀ̺귯¸®·Î ÀνÄÀÌ µÉ °ÍÀÌ´Ù. ¸µÅ©µÈ ÇÁ·Î±×·¥µéÀº ÀÌ ´Ü°è¿¡¼­´Â ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº ½ÇÇà½Ã¿¡ ¶óÀ̺귯¸®°¡ ·ÎµùµÉ ¶§ ¿µÇâÀ» ¹Þ´Â °ÍÀÌ´Ù.

    libName.so.xxx.yyy.zzz(¶Ç´Â soname ÀÎ libName.so.xxx)·ÎºÎÅÍ libName.so ¶ó´Â ½Éº¼¸¯ ¸µÅ©¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô Çؾ߸¸ ÇÏ´Â ÀÌÀ¯´Â ¸µÄ¿°¡ -1¿É¼ÇÀ¸·Î ¶óÀ̺귯¸®¸¦ ¹ß°ßÇÒ ¼ö ÀÖ°Ô Çϱâ À§Çؼ­ÀÌ´Ù. libName.so ¶ó´Â Çü½Ä¿¡ ¸ÂÃß¾îÁø ¶óÀ̺귯¸®ÀÇ À̸§ÀÌ ÇÊ¿äÇÑ °æ¿ì¸¦ À§Çؼ­ °í¾ÈµÈ ÀÛµ¿¹æ¹ýÀÌ´Ù.

     

10. Á¤Àû ¶óÀ̺귯¸® ¸¸µé±â

    ¸¸¾à¿¡ À§¿Í´Â ¹Ý´ë·Î Á¤Àû ¶óÀ̺귯¸®¸¦ ¸¸µå·Á°í ÇÑ´Ù¸é(¶Ç´Â Á¤ÀûÀ¸·Î ¸µÅ©µÈ °Í°ú µ¿ÀûÀ¸·Î ¸µÅ©µÈ °Í µÑ ´Ù¸¦ ¿øÇÑ´Ù¸é) ´ÙÀ½°ú °°Àº °úÁ¤À» µû¸¥´Ù.
    ÁÖÀÇ : ¶óÀ̺귯¸®¸¦ ¹ß°ßÇϴµ¥ À־ ¸µÄ¿´Â libName.so ¶ó´Â ÆÄÀÏÀ» ¸ÕÀú ã°í ±× ´ÙÀ½¿¡ libName.a¸¦ ã´Â´Ù. ¸¸¾à µÎ °³ÀÇ ¶óÀ̺귯¸®(Á¤ÀûÀÎ ¹öÀü°ú µ¿ÀûÀÎ ¹öÀü)¸¦ °°Àº À̸§À¸·Î ºÎ¸¥´Ù¸é ÀϹÝÀûÀ¸·Î °¢°¢ÀÇ °æ¿ì¸¦ ¸µÅ©(µ¿ÀûÀÎ °ÍÀÌ Ç×»ó ¸ÕÀú ¸µÅ©µÇ±â ¶§¹®¿¡)ÇÏ´Â °ÍÀ» °áÁ¤ÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ°Ô µÈ´Ù.

    ÀÌ·¯ÇÑ ÀÌÀ¯·Î Ç×»ó ¸¸¾à¿¡ µÎ °³ÀÇ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÑ ¹öÀüÀÌ ÀÖ´Ù¸é Á¤ÀûÀÎ °ÍÀº libName_s.a ¶ó°í À̸§À» ºÙ¿©ÁÖ°í µ¿ÀûÀÎ °ÍÀº ±×³É libName.so ¶ó°í À̸§ ºÙ¿©ÁÙ °ÍÀ» ±ÇÇÏ°í ½Í´Ù. ¸µÅ©ÇÒ ¶§¿¡´Â ±×·¡¼­ ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÉ °ÍÀÌ´Ù.

    gcc -o program -lName_s

    ÀÌ °æ¿ì´Â Á¤ÀûÀÎ °æ¿ìÀÌ°í µ¿ÀûÀÎ °ÍÀ» ¸¸µé ¶§¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

    gcc -0 program -lName

     

    10.1  ¼Ò½º¸¦ ÄÄÆÄÀÏÇϱâ

    ¼Ò½º¸¦ ÄÄÆÄÀÏÇϱâ À§Çؼ­´Â Ưº°ÇÑ ¹æ¹ýÀº ¾ø´Ù. À§¿¡¼­ ¸»ÇÑ ´ë·Î ¸µÅ©´Ü°è¿¡¼­ °áÁ¤ÇØ¾ß ÇÑ´Ù. ÇÊ¿äÇÏ´Ù¸é -f PIC ¿É¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù.

     

    10.2  ¶óÀ̺귯¸®¸¦ °´Ã¼¿¡ ¸µÅ©Çϱâ

    Á¤Àû ¶óÀ̺귯¸®ÀÇ °æ¿ì¿¡´Â ¸µÅ© ´Ü°è°¡ ÇÊ¿ä¾ø´Ù. ¸ðµç °´Ã¼´Â ar(1) ¸í·É¾îÀÇ Çؼ­ ¶óÀ̺귯¸® ÆÄÀϵéÀ» ¸¸µé ¼ö ÀÖ´Ù. ±×·± ´ÙÀ½ ½Éº¼µéÀ» ºü¸£°Ô Çؼ®Çس»±â À§Çؼ­ ¶óÀ̺귯¸®¿¡ ´ëÇÑ ranlib(1) ¸í·ÉÀ» ¼öÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù. ºñ·Ï ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ ÀÌ ¸í·ÉÀ» ½ÇÇàÇÏÁö ¾ÊÀ¸¸é ½ÇÇàÆÄÀÏ¿¡ ´ëÇÑ ¸ðµâ¿¡ ´ëÇÑ ¸µÅ©°¡ Áö¿öÁúÁöµµ ¸ð¸¥´Ù.

     

    10.3  ¶óÀ̺귯¸®ÀÇ ¼³Ä¡

    Á¤Àû ¶óÀ̺귯¸®´Â ¸¸¾à ¿À·ÎÁö Á¤Àû ¶óÀ̺귯¸® ÇüÅ·θ¸ »ç¿ëÇÏ·Á°í ÇÑ´Ù¸é libName.a ÇüÅ·ΠµÇ¾îÀÖ´Â À̸§À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª µÎ °¡Áö ÇüÅÂÀÇ ¶óÀ̺귯¸®¸¦ ¸ðµÎ °¡Áö°í Àֱ⸦ ¹Ù¶õ´Ù¸é libName_s.a ¶ó°í À̸§À» Áö¾îÁÙ °ÍÀ» ±ÇÇÏ°í ½Í´Ù. ÀÌ°ÍÀº Á¤ÀûÀ̳ª ¶Ç´Â µ¿ÀûÀ¸·Î ·ÎµùÇÏ´Â °ÍÀ» ½±°Ô Á¦¾îÇϱâ À§Çؼ­ ÀÌ´Ù.

    ¸µÅ©´Ü°è¿¡¼­ -static ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ´Ù. ÀÌ ¿É¼ÇÀº /lib/ld-linux.so ¸ðµâÀÇ ·ÎµùÀ» Á¦¾îÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª ÀÌ°ÍÀº ¶óÀ̺귯¸®ÀÇ °Ë»ö ¼ø¼­¿¡ ¿µÇâÀ» ¹ÌÄ¡Áö´Â ¾Ê´Â´Ù. ±×·¡¼­ ¸¸¾à¿¡ -static À¸·Î ÁöÁ¤ÇÏ°í ld(1)ÀÌ µ¿Àû ¶óÀ̺귯¸®¸¦ ¹ß°ßÇÑ´Ù¸é ld(1)´Â ¹ß°ßµÈ µ¿Àû ¶óÀ̺귯¸®¸¦ °¡Áö°í ÀÛ¾÷À» ÇÒ °ÍÀÌ´Ù. Áï -static À̶ó°í ÁöÁ¤Çß´Ù°í Çؼ­ °è¼ÓÀûÀ¸·Î Á¤ÀûÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» ãÁö´Â ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ½ÇÇà½Ã¿¡ ¶óÀ̺귯¸® ·çƾÀ» È£ÃâÇÒ ¶§ ¿¡·¯¸¦ ¹ß»ý½Ãų ¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é µ¿Àû ¶óÀ̺귯¸®´Â ½ÇÁ¦ ÀÚ½ÅÀÇ ÇÁ·Î±×·¥¿¡´Â ÇØ´ç ¶óÀ̺귯¸®°¡ ÀÖÁö ¾Ê±â ¶§¹®ÀÌ´Ù. -ÀÚµ¿ÀûÀ¸·Î µ¿ÀûÀÎ ·ÎµùÀ» À§ÇÑ ¸ðµâÀÌ ¸µÅ©µÇ¾îÁöÁö ¾Ê¾Ò°í ±×·¡¼­ ÀÌ ´Ü°è°¡ ¼öÇàµÉ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯¸¦ ³»´Â °ÍÀÌ´Ù. ±×·¡¼­ »ç¿ëÇÒ ¶§ -staticÀÌ ÁÖ¾îÁö¸é ¸µÄ¿°¡ Á¤È®ÇÑ ¶óÀ̺귯¸®¸¦ ãµµ·Ï ÇØÁÖ¾î¾ß ÇÑ´Ù.

     

11.Á¤Àû ¸µÅ©Çϱâ¿Í µ¿Àû ¸µÅ©Çϱâ

    Àß ¾Ë·ÁÁø ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÏ´Â °æ¿ì¸¦ »ý°¢Çغ¸ÀÚ.(¾Æ¸¶ ¸ðƼÇÁ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ °ÍÀÌ ÀûÀýÇÑ ¿¹°¡ µÉ °ÍÀÌ´Ù.)

    ÀÌ·± Á¾·ùÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé±â À§Çؼ­´Â ¼¼°¡Áö ¼±Åà »çÇ×ÀÌ ÀÖ´Ù.
    ù °´Â ½ÇÇàÆÄÀÏÀ» Á¤ÀûÀ¸·Î ¸µÅ©½ÃÄÑ ¸¸µå´Â °ÍÀÌ´Ù.(¿ÀÁ÷ .a ¶óÀ̺귯¸®¸¸À» »ç¿ëÇÑ´Ù.) ÀÌ·¯ÇÑ Á¾·ùÀÇ ÇÁ·Î±×·¥Àº ¿ÀÁ÷ Çѹø¸¸ ·ÎµåµÇ¾îÁö°í ½Ã½ºÅÛ ¾È¿¡ ÀÖ´Â ¾î¶°ÇÑ ¶óÀ̺귯¸®µµ °¡Áö°í ÀÖÀ» ÇÊ¿ä°¡ ¾ø´Ù.(½ÉÁö¾î /lib/ld-linux.so ±îÁöµµ) ±×·¯³ª ÀÌ°ÍÀº ¹ÙÀ̳ʸ® ÆÄÀÏ ¾È¿¡ ÇØ´ç ¼ÒÇÁÆ®¿þ¾î¿¡ ÇÊ¿äÇÑ ¸ðµç °ÍµéÀ» °¡Áö°í ´Ù³à¾ß ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ±×¸®°í ´ëºÎºÐ ÇÁ·Î±×·¥ÀÇ Å©±â°¡ ¸Å¿ì Å©´Ù.
    µÎ ¹ø°´Â µ¿ÀûÀ¸·Î ¸¸µå´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº Áï ¿ì¸®ÀÇ ¼ÒÇÁÆ®¿þ¾î°¡ ½ÇÇàµÇ±â À§Çؼ­´Â ¿¬°üµÈ ¸ðµç µ¿Àû ¶óÀ̺귯¸®µéÀÌ ¸ðµÎ Á¦°øµÇ¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ½ÇÇàÆÄÀÏÀº ¸Å¿ì ÀÛÁö¸¸ ¸ðµç ¶óÀ̺귯¸®¸¦ ¸ðµÎ °¡Áö°í ´Ù´Ï´Â °ÍÀº ½±Áö ¾ÊÀº ÀÏÀÏ °ÍÀÌ´Ù.(¿¹¸¦ µé¸é Motif¸¦ °¡Áö°í ÀÖÁö ¾ÊÀº »ç¶÷µµ ÀÖ´Ù.)
    ¼¼ ¹ø° ¼±Åà »çÇ×ÀÌ ÀÖ´Ù. ÀÌ°ÍÀº µÎ °¡Áö ÇüŸ¦ ¼­·Î ÇÕÄ¡´Â °ÍÀÌ´Ù. Áï ¾î¶°ÇÑ ¶óÀ̺귯¸®´Â µ¿ÀûÀ¸·Î ¶Ç ¾î¶² ¶óÀ̺귯¸®´Â Á¤ÀûÀ¸·Î Çؼ­ µÎ °³ÀÇ ÀåÁ¡À» ¸ðµÎ ÃëÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ÇüÅÂÀÇ ¼ÒÇÁÆ®¿þ¾î°¡ ¹èÆ÷¿¡´Â °¡Àå ÆíÇÑ ¹æ¹ýÀÌ µÈ´Ù.

    ¿¹¸¦ µé¸é, ¼¼°¡Áö ´Ù¸¥ ¶óÀ̺귯¸® Æ÷ÇÔ ÇüÅ´ ´ÙÀ½°ú °°´Ù.

    gcc -static -o program.static program.o -lm_s -lXm_s -lXt_s -lX11_s -lXmu_s -lXpm_s

    gcc -o program.dynamic program.o -lm -lXm -lXt -lX11 -lXmu -lXpm

    gcc -o program.mixed program.o -lm -lXm_s -lXt -lX11 -lXmu -lXpm

    ¼¼ ¹ø° °æ¿ì¿¡ Motif ¶óÀ̺귯¸®ÀÎ Motif(-lXm_s)´Â Á¤ÀûÀÎ °á°ú¸¦ ¾ò°í ±×¸®°í ´Ù¸¥ °ÍµéÀº µ¿ÀûÀÎ °á°ú¸¦ ¾ò°Ô µÈ´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ±â À§Çؼ­´Â Àû´çÇÑ ¹öÀüÀ» À§ÇÑ ¶óÀ̺귯¸®µéÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¿©±â¿¡¼­´Â libm.so.xx, libXt.so.xx, libX11.so.xx, libXmu.so.xx, libXpm.so.xx µîÀÌ ÇÊ¿ä¿¡ µû¶ó¼­ »ç¿ëµÉ °ÍÀÌ´Ù.




¡ã top

homeÀ¸·Î...