6. Á¤Àû ¶óÀ̺귯¸®ÀÇ ¸µÅ·

Á¤Àû ¶óÀ̺귯¸®´Â ºñ½ÁÇÑ ÇüÀ» Áö´Ñ ¿ÀºêÁ§Æ® ÆÄÀϵéÀÇ ÁýÇÕÀÌ´Ù. ÀÌ·¯ÇÑ ¶óÀ̺귯¸®µéÀº µð½ºÅ©¿¡ ¾ÆÄ«À̺ê(archive) Çü½ÄÀ¸·Î ÀúÀåµÈ´Ù. ¾ÆÄ«À̺ê´Â ¶óÀ̺귯¸®¸¦ ±¸¼ºÇϰí ÀÖ´Â °ÍµéÀ» Á» ´õ ºü¸£°Ô °Ë»öÇϱâ À§ÇØ µð·ºÅ丮 Á¤º¸¸¦ ¶ÇÇÑ °¡Áö°í ÀÖ´Ù. °¢°¢ÀÇ ELF ¾ÆÄ«À̺ê´Â !<arch>\n (\nÀº ´º¶óÀÎÀ» ¶æÇÑ´Ù)ÀÇ 8ÀÚ·Î ±¸¼ºµÈ magic ¹®ÀÚ¿­·Î ½ÃÀÛÇÑ´Ù.

Á¤Àû ¶óÀ̺귯¸®µéÀº ¸µÄ¿¿¡°Ô ÀÎÀÚ (arguments)·Î½á Àü´ÞµÈ´Ù. ±×·¯¸é ¸µÄ¿´Â ÇÁ·Î±×·¥¿¡¼­ ÂüÁ¶µÇ´Â ¿ÀºêÁ§Æ® ¸ðµâµé¸¸À» º¹»çÇÑ´Ù. À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ libc.a´Â ¸ðµç C ¶óÀ̺귯¸® ÇÔ¼öµé (printf³ª fopenµî°ú °°Àº)À» ´ã°í ÀÖ´Ù.

gcc foo.o bar.o /usr/lib/libc.a /usr/lib/libm.a

libm.a´Â À¯´Ð½º ½Ã½ºÅÛ¿¡¼­ sqrt, sin, cos°ú °°Àº ¼öÇаü·Ã ÇÔ¼öµéÀ» ´ã°í ÀÖ´Â ¶óÀ̺귯¸®ÀÌ´Ù.

Á¤Àû ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÒ ¶§, ½Éº¼ ÇØ¼®°úÁ¤ÀÌ ¾î¶»°Ô ÀÌ·ç¾îÁö³ª º¸¸é, ¸µÄ¿´Â Ä¿¸Çµå ¶óÀο¡¼­ ÀÔ·ÂÀ¸·Î ¹ÞÀº Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀϵé°ú ¾ÆÄ«À̺êµéÀ» ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î ½ºÄµÇÑ´Ù. ÀÌ·¯ÇÑ ½ºÄµ °úÁ¤Áß¿¡, ¸µÄ¿´Â ¼¼°¡ÁöÀÇ ÁýÇÕÀ» À¯ÁöÇÑ´Ù. ¸ÕÀú, Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀϵéÀÌ ½ÇÇà °¡´ÉÇÑ ÆÄÀÏÀÇ »óÅ·Πµé¾î°£ ÁýÇÕ O; ¾ÆÁ÷ ÇØ¼®µÇÁö ¾ÊÀº ½Éº¼µéÀ» ´ã°í ÀÖ´Â ÁýÇÕ U, ÀÌÀüÀÇ ÀÔ·Â ÆÄÀÏ¿¡¼­ Á¤ÀÇµÈ ½Éº¼À» ´ã°í ÀÖ´Â ÁýÇÕ D°¡ ±×°ÍÀÌ´Ù. ÀÌ·¯ÇÑ ÁýÇÕµéÀº Ãʱ⿡ ºñ¿öÁø »óÅÂÀÌ´Ù.

À§ÀÇ ÀÏ·ÃÀÇ ¼ø¼­¶§¹®¿¡ Ä¿¸Çµå ¶óÀο¡¼­ Á¤Àû ¶óÀ̺귯¸®°¡ ³¡¿¡ ¿Â´Ù. ¶ÇÇÑ ¶óÀ̺귯¸®µé »çÀÌ¿¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¼øÈ¯ÀûÀÎ ÀÇÁ¸¼ºµµ ÁÖÀDZí°Ô »ìÆì¾ßÇÑ´Ù. ÀÔ·ÂÀ¸·Î ÁÖ¾îÁö´Â ¶óÀ̺귯¸®µéÀº ¼ø¼­´ë·Î ÁÖ¾îÁ®¼­ ¾ÆÄ«À̺êÀÇ ¸â¹öµéÀÌ ÂüÁ¶ÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ßÇϸç, Á¤ÀÇµÈ ÇϳªÀÇ ½Éº¼Àº µÚµû¸£´Â Ä¿¸Çµå ¶óÀÎÀÇ ÀԷ¿¡ ÀÇÇØ ÂüÁ¶µÇ¾î¾ß ÇÑ´Ù. ¸¸¾à ÇØ¼®ÀÌ ¾ÈµÈ ½Éº¼ÀÌ ÀÖ°í, ±× ½Éº¼ÀÌ ¿©·¯ Á¤Àû ¶óÀ̺귯¸®µé³»¿¡¼­ Á¤ÀǵǾî ÀÖÀ¸¸é, Ä¿¸Çµå ¶óÀο¡¼­ óÀ½¿¡ ÁÖ¾îÁø ¶óÀ̺귯¸®¿¡ Á¤ÀÇµÈ °ÍÀ» ¹Þ¾ÆµéÀδÙ.