¿ÀºêÁ§Æ® ÆÄÀϵéÀº ¼¼°¡Áö·Î ºÐ·ùµÉ ¼ö ÀÖ´Ù.
Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏ(Relocatable object file). À̰ÍÀº ¹ÙÀ̳ʸ® ÄÚµå¿Í µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç, ½ÇÇà°¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ¸¸µé±â À§ÇØ ÄÄÆÄÀÏ-ŸÀÓ¶§ Àç¹èÄ¡ °¡´ÉÇÑ ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀϵé°ú °áÇÕµÉ ¼ö ÀÖ´Â °ÍÀ» °¡¸®Å²´Ù.
½ÇÇà°¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏ(Executable object file). À̰ÍÀº ¹ÙÀ̳ʸ® ÄÚµå¿Í µ¥ÀÌÅ͸¦ °¡Áö°í ÀÖÀ¸¸ç, ¸Þ¸ð¸®·Î Á÷Á¢ ·ÎµåµÇ¾î ½ÇÇàµÉ ¼ö ÀÖ´Â °ÍÀ» °¡¸®Å²´Ù.
°øÀ¯ ¿ÀºêÁ§Æ® ÆÄÀÏ(Shared object file). À̰ÍÀº Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ Æ¯º°ÇÑ Å¸ÀÔÀ¸·Î, ·Îµå-ŸÀÓÀ̳ª ·±-ŸÀÓ¶§ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®·Î ·ÎµåµÇ°í ¸µÅ·µÉ ¼ö ÀÖ´Â °ÍÀ» °¡¸®Å²´Ù.
ÄÄÆÄÀÏ·¯¿Í ¾î¼Àºí·¯´Â Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» »ý¼ºÇÑ´Ù(°øÀ¯ ¿ÀºêÁ§Æ® ÆÄÀϵµ ¶ÇÇÑ »ý¼ºÇÑ´Ù). ¸µÄ¿´Â ÀÌ·¯ÇÑ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» ÇÕÃÄ ½ÇÇà°¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» »ý¼ºÇÑ´Ù.
¿ÀºêÁ§Æ® ÆÄÀϵéÀº ½Ã½ºÅÛ¿¡ µû¶ó ±× Çü½ÄÀÌ Æ²¸®´Ù. ÃÖÃÊÀÇ À¯´Ð½º ½Ã½ºÅÛÀº a.out Æ÷¸ËÀ» »ç¿ëÇÏ¿´´Ù. System VÀÇ Ãʱ⠹öÀü¿¡¼´Â COFF(Common object file format)¶ó´Â °ÍÀ» »ç¿ëÇÏ¿´°í, À©µµ¿ìÁî NT´Â COFFÀÇ º¯ÇüÀÎ PE(portable executable)¶ó´Â Çü½ÄÀ» »ç¿ëÇÑ´Ù; IBMÀº µ¶ÀÚÀûÀÎ IBM 360 Çü½ÄÀ» »ç¿ëÇÑ´Ù. ¸®´ª½º¿Í ¼Ö¶ó¸®½º¿Í °°Àº Çö´ëÀûÀÎ À¯´Ð½º ½Ã½ºÅÛµéÀº À¯´Ð½º ELF(executable and linking format)Æ÷¸ËÀ» »ç¿ëÇÑ´Ù. ÀÌ ¹®¼´Â ÁÖ·Î ELF¿¡ ´ëÇØ ´Ù·é´Ù.
Ç¥ 1. ÀüÇüÀûÀÎ Àç¹èÄ¡ °¡´ÉÇÑ ELF ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ Çü½Ä
ELF Header |
.text |
.rodata |
.data |
.bss |
.symtab |
.rel.text |
.rel.data |
.debug |
.line |
.strtab |
ELF Çì´õ´Â 4-byte magic¹®ÀÚ¿(177ELF)·Î ½ÃÀÛÇÑ´Ù. ELF Àç¹èÄ¡ °¡´ÉÇÑ ¿ÀºêÁ§Æ® ÆÄÀÏÀÇ °¢ ±¸°£ÀÇ Àǹ̴ ¾Æ·¡¿Í °°´Ù.
.text, ÄÄÆÄÀÏµÈ ÄÚµåÀÇ ¸Ó½Å Äڵ尡 µé¾îÀÖ´Ù.
.rodata, read-only µ¥ÀÌÅͰ¡ µé¾îÀÖ´Ù, printf¹®ÀÇ ¹®ÀÚ¿µîÀÌ ÀÌ¿¡ ÇØ´çÇÑ´Ù.
.data, ÃʱâÈµÈ Àü¿ª º¯¼öµéÀÌ µé¾îÀÖ´Ù.
.bss, ÃʱâȵÇÁö ¾ÊÀº Àü¿ª º¯¼öµéÀÌ µé¾îÀÖ´Ù. BSS´Â block storage startÀÇ À̴ϼÈÀ̰í, ÀÌ ±¸°£Àº ½ÇÁ¦ÀûÀ¸·Î ¿ÀºêÁ§Æ® ÆÄÀÏ¿¡¼ °ø°£À» Â÷ÁöÇÏÁö ¾Ê°í ´ÜÁö °ø°£À» È®º¸ÇÏ´Â ¿ªÇÒ¸¸ ÇÑ´Ù.
.symtab, ÇÁ·Î±×·¥¿¡¼ Á¤ÀÇµÈ Àü¿ª º¯¼öµé°ú ÇÔ¼öµé¿¡ ´ëÇÑ ÂüÁ¶ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ Å×À̺íÀº Áö¿ª º¯¼ö¿¡ ´ëÇÑ °ÍÀº ´ã°í ÀÖÁö ¾Ê´Ù; Áö¿ª º¯¼öµéÀº ½ºÅÿ¡ ÀÇÇØ À¯ÁöµÈ´Ù.
.rel.text, .text¿¡ µé¾îÀÖ´Â °¢ ¸Ó½Å ÄÚµåÀÇ À§Ä¡¸¦ ³ªÅ¸³½´Ù. À̰͵éÀº ³ªÁß¿¡ ¸µÄ¿°¡ ÀÌ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀϵé°ú ¿¬°á½Ãų¶§ ÇÊ¿äÇÏ´Ù.
.rel.data, ÇöÀçÀÇ ÆÄÀÏ¿¡¼´Â Á¤ÀǵǾî ÀÖÁö ¾ÊÁö¸¸ ÂüÁ¶µÇ´Â Àü¿ª º¯¼ö¿¡ ´ëÇÑ Àç¹èÄ¡ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.
.debug, Áö¿ª, Àü¿ª º¯¼öµé¿¡ ´ëÇÑ µð¹ö±ë ½Éº¼µéÀÌ µé¾îÀÖ´Ù. ÀÌ ±¸°£Àº ÄÄÆÄÀÏ·¯°¡ -g ¿É¼Ç°ú ÇÔ²² ¼öÇàµÉ ¶§ »ý¼ºµÈ´Ù.
.line, .text¿¡ µé¾îÀÖ´Â ¸Ó½Å ÄÚµå¿Í ½ÇÁ¦ C ÄÚµåÀÇ ¶óÀÎ ³Ñ¹ö¿¡ ´ëÇÑ ¸ÞÇÎ Á¤º¸°¡ µé¾îÀÖ´Ù. µð¹ö°Å ÇÁ·Î±×·¥ÀÌ ÀÌ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
.strtab, .symtab, .debug ±¸°£¿¡ ÀÖ´Â ½Éº¼ Å×ÀÌºí¿¡ µé¾îÀÖ´Â ½ºÆ®¸µµé¿¡ ´ëÇÑ Å×À̺íÀÌ´Ù.