Go to the first, previous, next, last section, table of contents.


¸í·É ¾ð¾î(Command Language)

¸í·É ¾ð¾î´Â ¸µÅ© ÇÁ·Î¼¼½º¿¡ ´ëÇÑ ¸í½ÃÀûÀÎ Á¦¾î¸¦ Á¦°øÇÑ´Ù. ¸µÄ¿ÀÇ ÀÔ·Â ÆÄÀϵé°ú Ãâ·Â »çÀÌÀÇ ¿ÏÀüÇÑ ¸ÊÇÎ ½ºÆåÀ» Áö¿øÇÑ´Ù. ÀÌ°ÍÀº ´ÙÀ½°ú °°Àº °ÍµéÀ» Á¦¾îÇÑ´Ù.

¸µÄ¿¿¡°Ô `-T' ¿É¼ÇÀ» ÅëÇؼ­ ¸í½ÃÀûÀ¸·Î ¶Ç´Â ÀÏ¹Ý ÆÄÀÏó·³ ¾Ï¹¬ÀûÀ¸·Î ¸í·É ÆÄÀÏ(¸µÄ¿ ½ºÅ©¸³Æ®¶ó°í Çϱ⵵ ÇÑ´Ù)À» Á¦°øÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀûÀ¸·Î `-T' ¿É¼ÇÀ» »ç¿ëÇؾ߸¸ ÇÑ´Ù. ¹¬½ÃÀûÀÎ ¸µÄ¿ ½ºÅ©¸³Æ®´Â µðÆúÆ® ¸µÄ¿ ½ºÅ©¸³Æ®¸¦ ´ëüÇѴٱ⠺¸´Ù´Â È®ÀåÇÏ°íÀÚ ÇÒ ¶§¸¸ »ç¿ëµÇ¾î¾ß ÇÑ´Ù; ÀüÇüÀûÀ¸·Î ¹¬½ÃÀû ¸µÄ¿ ½ºÅ©¸³Æ®´Â INPUT ¶Ç´Â GROUP ¸í·Éµé¸¸À¸·Î ÀÌ·ç¾îÁ® ÀÖÀ» °ÍÀÌ´Ù.

¸µÄ¿°¡ Áö¿øµÇ´Â ¿ÀºêÁ§Æ® ¶Ç´Â ¾ÆÄ«À̺ê Æ÷¸äÀ¸·Î ÀνÄÇÒ ¼ö ¾ø°Å³ª ¶Ç´Â ¸µÄ¿ ½ºÅ©¸³Æ®·Î ÀνÄÇÒ ¼ö ¾ø´Â ÆÄÀÏÀ» ¿ÀÇÂÇϸé ÀÌ°ÍÀº ¿¡·¯¸¦ º¸°íÇÑ´Ù.

¸µÄ¿ ½ºÅ©¸³Æ®(Linker Scripts)

ld ¸í·É ¾ð¾î´Â ¹®Àå(statement)µéÀÇ ¸ðÀÓÀÌ´Ù; ¾î¶² °ÍµéÀº Ưº°ÇÑ ¿É¼ÇÀ» ¼³Á¤ÇÏ´Â ´Ü¼øÇÑ Å°¿öµåµéÀÌ°í ¾î¶² °ÍµéÀº ÀÔ·Â ÆÄÀϵéÀ̳ª À̸§ Ãâ·Â ÆÄÀϵéÀ» ¼±ÅÃÇÏ°í ±×·ìÇÎÇÏ´Â µ¥ »ç¿ëµÈ´Ù; ±×¸®°í µÎ ¹®Àå ŸÀÔµéÀÌ ±âÃÊÀûÀÌ¸ç ¸µÅ© ÇÁ·Î¼¼½º¿¡ ³ÎÄ¡ ¿µÇâÀ» ¹ÌÄ£´Ù.

ld ¸í·É ¾ð¾îÀÇ °¡Àå ±âÃÊÀûÀÎ ¸í·ÉÀº SECTIONS ¸í·É(see section Ãâ·Â ¼½¼Ç ÁöÁ¤(Specifying Output Sections))ÀÌ´Ù. °¢ ÀÇ¹Ì ÀÖ´Â ¸í·É ½ºÅ©¸³Æ®´Â SECTIONS ¸í·ÉÀ» °¡Á®¾ß ÇÑ´Ù: ÀÌ°ÍÀº ¿©·¯ µî±ÞÀÇ ÀÚ¼¼ÇÑ ³»¿ëµéÀ» °¡Áø, Ãâ·Â ÆÄÀÏÀÇ ·¹À̾ƿôÀÇ "±×¸²(picture)"À» ÁöÁ¤ÇÑ´Ù. ¾î¶² ´Ù¸¥ ¸í·Éµµ ¸ðµç °æ¿ì¿¡ ¹Ýµå½Ã ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï´Ù.

MEMORY ¸í·ÉÀº Ÿ°Ù ¾ÆÅ°ÅØÃÄ¿¡¼­ »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®¸¦ ±â¼úÇؼ­ SECTIONS ¸í·ÉÀ» º¸¿ÏÇÑ´Ù. ÀÌ ¸í·ÉÀº ¿É¼ÇÀÌ´Ù; MEMORY ¸í·ÉÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é ld´Â ¸ðµç Ãâ·Â¿¡ ´ëÇؼ­ ¿¬¼ÓµÈ ºí·°À¸·Î ÃæºÐÇÑ ¸Þ¸ð¸®°¡ »ç¿ë°¡´ÉÇÒ °ÍÀ̶ó°í ÃßÁ¤ÇÑ´Ù. See section ¸Þ¸ð¸® ·¹À̾ƿô(Memory Layout).

¸µÄ¿ ½ºÅ©¸³Æ®¿¡¼­ ÁÖ¼®À» C¿¡¼­Ã³·³ ³ÖÀ» ¼ö ÀÖ´Ù; `/*'°ú `*/' ¾È¿¡ ¹­À¸¸é µÈ´Ù. C¿¡¼­ ó·³ ÁÖ¼®µéÀº ¹®¹ýÀûÀ¸·Î °ø¹é°ú µ¿ÀÏÇÏ´Ù.

Expressions

¸¹Àº À¯¿ëÇÑ ¸í·ÉµéÀº »ê¼ú Ç¥Çö½ÄµéÀ» Æ÷ÇÔÇÑ´Ù. ¸í·É ¾ð¾î¿¡ Àִ ǥÇö½Ä¿¡ ´ëÇÑ ¹®¹ýÀº ´ÙÀ½°ú °°Àº Ư¼ºÀ» °¡Áö¸é¼­ C Ç¥Çö½ÄÀÇ ¹®¹ý°ú µ¿ÀÏÇÏ´Ù:

Á¤¼ö(Integers)

8Áø¼ö Á¤¼ö´Â `0' µÚ¿¡ µû¶ó¿À°í 0°³ ÀÌ»óÀÇ 8Áø¼ö µðÁöÆ® (`01234567')µé·Î ÀÌ·ç¾îÁø´Ù.

_as_octal = 0157255;

10Áø¼ö Á¤¼ö´Â 0ÀÌ ¾Æ´Ñ µðÁöÆ®·Î ½ÃÀÛÇÏ°í 0°³ ÀÌ»óÀÇ µðÁöÆ®µé (`0123456789')·Î ÀÌ·ç¾îÁø´Ù.

_as_decimal = 57005;

16Áø¼ö Á¤¼ö´Â `0x'³ª `0X' µÚ¿¡ Çϳª ÀÌ»óÀÇ 16Áø¼ö µðÁöÆ®µé `0123456789abcdefABCDEF'·Î ÀÌ·ç¾îÁø´Ù.

_as_hex = 0xdead;

À½ÀÇ Á¤¼ö¸¦ ¾²±â À§Çؼ­ Á¢µÎ ¿¬»êÀÚ `-' (see section ¿¬»êÀÚ(Operators)) ¸¦ »ç¿ëÇÑ´Ù.

_as_neg = -57005;

ÀÌ¿Í ¾Æ¿ï·¯ K ¿Í M°¡ »ó¼ö¸¦ °¢°¢ ¹è¾¿ ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½Àº ¸ðµÎ µ¿ÀÏÇÑ ¾çÀ» °¡¸®Å²´Ù:

        _fourk_1 = 4K;
        _fourk_2 = 4096;
        _fourk_3 = 0x1000;

½É¹ú À̸§(Symbol Names)

µû¿ÈÇ¥·Î ¹­Áö ¾ÊÀ¸¸é ½É¹ú À̸§µéÀº ¹®ÀÚ, ¹ØÁÙ, ¶Ç´Â Á¡À¸·Î ½ÃÀÛÇÏ°í ÀÓÀÇÀÇ ¹®ÀÚµé, ¹ØÁÙ, µðÁöÆ®, Á¡ ±×¸®°í ÇÏÀÌÇÂÀ» ´ãÀ» ¼ö ÀÖ´Ù. µû¿ÈÇ¥·Î ¹­Áö ¾ÊÀº ½É¹ú À̸§µéÀº ¹Ýµå½Ã ÀÓÀÇÀÇ Å°¿öµå¿Í Ãæµ¹ÇÏ¸é ¾ÈµÈ´Ù. ÀÌ»óÇÑ ¹®ÀÚµéÀ» ´ã°í Àְųª Å°¿öµå¿Í µ¿ÀÏÇÑ À̸§À» ´ã°í ÀÖ´Â ½É¹úÀ», ½É¹ú À̸§À» °ãµû¿ÈÇ¥·Î ½Î¼­, ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù:

        "SECTION" = 9;
        "with a space" = "also with a space" + 10;

½É¹úµéÀº ¸¹Àº ºñ-¾ËÆĺª ¹®ÀÚµéÀ» ´ãÀ» ¼ö Àֱ⠶§¹®¿¡ ½É¹úµéÀ» °ø¹éµé·Î ±¸ºÐÇÏ´Â °ÍÀÌ °¡Àå ¾ÈÀüÇÏ´Ù. ¿¹¸¦ µé¾î¼­ `A-B'´Â ÇϳªÀÇ ½É¹úÀÌ´Ù. ¹Ý¸é¿¡ `A - B'´Â »©±â¸¦ Æ÷ÇÔÇÏ°í Àִ ǥÇö½ÄÀÌ´Ù.

À§Ä¡ Ä«¿îÅÍ(The Location Counter)

Ư¼öÇÑ ¸µÄ¿ º¯¼ö dot `.' ´Â Ç×»ó ÇöÀç Ãâ·Â À§Ä¡ Ä«¿îÅ͸¦ ´ã°í ÀÖ´Ù. .´Â Ç×»ó Ãâ·Â ¼½¼Ç¿¡ ÀÖ´Â À§Ä¡¸¦ ÂüÁ¶Çϱ⠶§¹®¿¡ ÀÌ°ÍÀº Ç×»ó SECTIONS ¸í·É¾È¿¡ Àִ ǥÇö½Ä¿¡ ³ªÅ¸³ª¾ß ÇÑ´Ù. . ½É¹úÀº ÀÏ¹Ý ½É¹úÀÌ Ç¥Çö½Ä¿¡¼­ Çã¿ëµÈ À§Ä¡¶ó¸é ¾îµðµçÁö ³ªÅ¸³¯ ¼ö ÀÖÁö¸¸, ÀÌ°ÍÀÇ ÇÒ´ç(assignment)Àº ºÎÀÛ¿ëÀ» °¡Áø´Ù. ¾î¶² °ªÀ» . ½É¹ú¿¡ ÇÒ´çÇÏ´Â °ÍÀº À§Ä¡ Ä«¿îÅÍ°¡ À̵¿µÇµµ·Ï ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº Ãâ·Â ¼½¼Ç¿¡ ±¸¸Û(hole)À» »ý¼ºÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. À§Ä¡ Ä«¿îÅÍ´Â µÚÂÊÀ¸·Î À̵¿µÇ¾î¼­´Â ¾ÈµÈ´Ù.

SECTIONS
{
  output :
  {
  file1(.text)
  . = . + 1000;
  file2(.text)
  . += 1000;
  file3(.text)
  } = 0x1234;
}

ÀÌÀü ¿¹Á¦¿¡¼­ file1Àº Ãâ·Â ¼½¼ÇÀÇ Ã³À½¿¡ À§Ä¡ÇÑ´Ù. ±× µÚ¿¡ 1000¹ÙÀÌÆ®ÀÇ Æ´»õ°¡ ÀÖ´Ù. ±×¸®°í file2 °¡ ³ªÅ¸³­´Ù. ±×¸®°í ±× µÚ¿¡ ¶Ç 1000¹ÙÀÌÆ®ÀÇ Æ´»õ°¡ ÀÖ°í ±× µÚ¿¡ file3°¡ ·ÎµåµÈ´Ù. `= 0x1234'¶ó°í Ç¥±âÇÏ´Â °ÍÀº ¾î¶² µ¥ÀÌÅÍ°¡ ±× Æ´»õ¿¡ ±â·ÏµÇ¾î¾ß ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù (see section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)).

@vfill

¿¬»êÀÚ(Operators)

¸µÄ¿´Â ´ÙÀ½°ú °°ÀÌ Ç¥ÁØ ¹ÙÀεù°ú ¿ì¼±¼øÀ§ ·¹º§µé°ú ÇÔ²², ¼ö½Ä ¿¬»êÀÚµéÀÇ Ç¥ÁØ C ÁýÇÕÀ» ÀνÄÇÑ´Ù: { @obeylines@parskip=0pt@parindent=0pt @dag@quad Prefix operators. @ddag@quad See section ÇÒ´ç: ½É¹ú Á¤ÀÇ(Assignment: Defining Symbols). }

Æò°¡(Evaluation)

¸µÄ¿´Â Ç¥Çö½Äµé¿¡ ´ëÇؼ­ "°ÔÀ¸¸¥ Æò°¡(lazy evaluation)"¸¦ »ç¿ëÇÑ´Ù; ÀÌ°ÍÀº Àý´ëÀûÀ¸·Î ÇÊ¿äÇÒ ¶§¸¸ Ç¥Çö½ÄÀ» °è»êÇÑ´Ù. ¸µÄ¿´Â ÀÓÀÇÀÇ ¸µÅ©¸¦ Çϱâ À§Çؼ­ ½ÃÀÛ ÁÖ¼ÒÀÇ °ª°ú ¸Þ¸ð¸® ¿µ¿ªµéÀÇ ±æÀ̸¦ ÇÊ¿ä·Î ÇÑ´Ù; ÀÌ·± °ªµéÀº ¸µÄ¿°¡ ¸í·É ÆÄÀÏÀ» ÀÐÀ» ¶§ °¡´ÉÇÑ ÇÑ »¡¸® °è»êµÈ´Ù. ±×·¯³ª ´Ù¸¥ °ªµé(¿¹¸¦ µé¾î ½É¹ú °ªµé)Àº ÀúÀå¼Ò ÇÒ´ç(stroage allocation)ÀÌ ÀÌ·ç¾îÁö±â Àü±îÁö´Â ¾Ë·ÁÁö°Å³ª ¾Ê°Å³ª ÇÊ¿äÇÏÁö ¾Ê´Ù. ±×·± °ªµéÀº ³ªÁß¿¡ Æò°¡µÈ´Ù. ´Ù¸¥ Á¤º¸(Ãâ·Â ¼½¼ÇµéÀÇ Å©±âµî°ú °°Àº)°¡ ½É¹ú ÇÒ´ç Ç¥Çö½Ä¿¡¼­ »ç¿ëµÉ ¼ö ÀÖÀ» ¶§¿¡.

ÇÒ´ç: ½É¹ú Á¤ÀÇ(Assignment: Defining Symbols)

¿©·¯ºÐÀº C ÇÒ´ç ¿¬»êÀÚµé Áß Çϳª¸¦ »ç¿ëÇؼ­, ±Û·Î¹ú ½É¹úµéÀ» »ý¼ºÇÒ ¼ö ÀÖ°í ±Û·Î¹ú ½É¹úµé¿¡ °ªµé(ÁÖ¼Òµé)À» ÇÒ´çÇÒ ¼ö ÀÖ´Ù:

symbol = expression ;
symbol &= expression ;
symbol += expression ;
symbol -= expression ;
symbol *= expression ;
symbol /= expression ;

µÎ °³ÀÇ °ÍµéÀÌ ld Ç¥Çö½Äµé¿¡¼­ ´Ù¸¥ ¿¬»êÀÚµéÀ» ±¸ºÐÇÑ´Ù.

ÇÒ´ç ¹®ÀåµéÀº ´ÙÀ½°ú °°ÀÌ º¸ÀÏ ¼ö ÀÖ´Ù:

ù¹ø° µÎ °æ¿ìµéÀº È¿·Â¸é¿¡¼­ µ¿ÀÏÇÏ´Ù--µÑ´Ù Àý´ë ÁÖ¼Ò·Î ½É¹úÀ» Á¤ÀÇÇÑ´Ù. µÎ¹ø° °æ¿ì´Â ÁÖ¼Ò°¡ ƯÁ¤ÇÑ ¼½¼Ç (see section Ãâ·Â ¼½¼Ç ÁöÁ¤(Specifying Output Sections)) ¿¡ »ó´ëÀûÀÎ ½É¹úÀ» Á¤ÀÇÇÑ´Ù.

¸µÄ¿ Ç¥Çö½ÄÀÌ Æò°¡µÇ°í º¯¼ö¿¡ ÇÒ´çµÉ ¶§ ÀÌ°ÍÀº Àý´ë ¶Ç´Â Àç¹èÄ¡ °¡´ÉÇÑ Å¸ÀÔÀ» ¹Þ´Â´Ù. Àý´ë Ç¥Çö½Ä ŸÀÔÀº ½É¹úÀÌ Ãâ·Â ÆÄÀÏ¿¡ ÀÖ°Ô µÉ °ªÀ» °¡Áö´Â ŸÀÔÀÌ´Ù; »ó´ëÀû Ç¥Çö½Ä ŸÀÔÀº °ªÀÌ ¼½¼Ç º£À̽º·ÎºÎÅÍÀÇ °íÁ¤µÈ ¿ÀÇÁ¼ÂÀ¸·Î Ç¥ÇöµÈ´Ù.

Ç¥Çö½ÄÀÇ Å¸ÀÔÀº ½ºÅ©¸³Æ® ÆÄÀÏ¿¡¼­ÀÇ À§Ä¡¿¡ ÀÇÇؼ­ Á¦¾îµÈ´Ù. ¼½¼Ç Á¤ÀÇ ¾È¿¡¼­ ÇÒ´çµÈ ½É¹úÀº ¼½¼ÇÀÇ º£À̽º¿¡ »ó´ëÀûÀ¸·Î »ý¼ºµÈ´Ù; ´Ù¸¥ Àå¼Ò¿¡¼­ ÇÒ´çµÈ ½É¹úÀº Àý´ëÀûÀÎ ½É¹ú·Î »ý¼ºµÈ´Ù. ¼½¼Ç Á¤ÀǾȿ¡¼­ »ý¼ºµÈ ½É¹úÀº ¼½¼ÇÀÇ º£À̽º¿¡ »ó´ëÀûÀ̱⠶§¹®¿¡ Àç¹èÄ¡ °¡´ÉÇÑ Ãâ·ÂÀÌ ¿ä±¸µÇ¸é ÀÌ°ÍÀº Àç¹èÄ¡ °¡´ÉÇÏ°Ô ³²À» °ÍÀÌ´Ù. ½É¹úÀº Àý´ë ÇÒ´ç ÇÔ¼ö ABSOLUTE ¸¦ »ç¿ëÇÏ¿© ¼½¼Ç Á¤Àdz»¿¡¼­ ÇÒ´çµÉ ¶§¿¡µµ, Àý´ë °ªÀ¸·Î »ý¼ºµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ÁÖ¼Ò°¡ .dataÀ̶ó´Â À̸§ÀÇ Ãâ·Â ¼½¼ÇÀÇ ¸¶Áö¸· ¹ÙÀÌÆ®ÀÎ Àý´ë ½É¹úÀ» »ý¼ºÇϱâ À§Çؼ­´Â:

SECTIONS{ ...
  .data : 
    {
      *(.data)
      _edata = ABSOLUTE(.) ;
    } 
... }

¸µÄ¿´Â ¼Ò½º Ç¥Çö½Ä¿¡ ÀÖ´Â ¸ðµç ¿ë¾îµéÀÌ ¾Ë·ÁÁú ¶§±îÁö ÇÒ´çÀÇ Æò°¡¸¦ ²¨µÎ·Á°í(put off) ½ÃµµÇÑ´Ù (see section Æò°¡(Evaluation)). ¿¹¸¦ µé¾î¼­ ¼½¼ÇµéÀÇ Å©±â´Â ÇÒ´ç ÀÌÈıîÁö´Â ¾Ë·ÁÁú ¼ö ¾ø´Ù. ±×·¡¼­ ÀÌ·± °Í¿¡ Á¾¼ÓÀûÀÎ ÇÒ´çÀº ÇÒ´ç ÀÌÈıîÁö ¼öÇàµÇÁö ¾Ê´Â´Ù. À§Ä¡ Ä«¿îÅÍ dot, `.'¿¡ Á¾¼ÓÀûÀÎ °Í°ú °°Àº ¾î¶² Ç¥Çö½ÄµéÀº ¹Ýµå½Ã ÇÒ´ç µµÁß¿¡ Æò°¡µÇ¾î¾ß ÇÑ´Ù. Ç¥Çö½ÄÀÇ °á°ú°¡ ÇÊ¿äÇÏ´Ù¸é ±×·¯³ª ±× °ªÀÌ »ç¿ë ºÒ°¡´ÉÀ̶ó¸é ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½°ú °°Àº ½ºÅ©¸³Æ®´Â

SECTIONS { ...
  text 9+this_isnt_constant : 
    { ...
    }
... }

¿¡·¯ ¸Þ½ÃÁö "Non constant expression for initial address"¸¦ ¹ß»ý½ÃŲ´Ù.

¾î¶² °æ¿ì ¸µÄ¿ ½ºÅ©¸³Æ®°¡ ½É¹úÀÌ ÂüÁ¶µÉ ¶§¸¸, ±×¸®°í ÀÌ°ÍÀÌ ¸µÅ©¿¡ Æ÷ÇÔµÈ ÀÓÀÇÀÇ ¿ÀºêÁ§Æ®¿¡¼­µµ Á¤ÀǵÇÁö ¾Ê¾ÒÀ» °æ¿ì¿¡¸¸, ½É¹úÀ» Á¤ÀÇÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ÀüÅëÀûÀÎ ¸µÄ¿µéÀº ½É¹ú `etext'¸¦ Á¤ÀÇÇÑ´Ù. ±×·¯³ª ANSI C´Â »ç¿ëÀÚ°¡ `etext'¸¦ ¿¡·¯ ¾øÀÌ ÇÔ¼ö·Î½á »ç¿ëÇÒ ¼ö Àֱ⸦ ¿ä±¸ÇÑ´Ù. PROVIDE Å°¿öµå´Â `etext'°ú °°Àº ½É¹úÀ», ÀÌ°ÍÀÌ ÂüÁ¶µÇÁö¸¸ Á¤ÀǵÇÁö ¾ÊÀº °æ¿ì¿¡¸¸, Á¤ÀÇÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¹®¹ýÀº PROVIDE(symbol = expression) ÀÌ´Ù.

»ê¼ú¿¬»ê ÇÔ¼ö(Arithmetic Functions)

¸í·É ¾ð¾î´Â ¸µÅ© ½ºÅ©¸³Æ® Ç¥Çö½Äµé ¾È¿¡¼­ »ç¿ëµÇ´Â ´Ù¼öÀÇ ³»Àå ÇÔ¼öµéÀ» Æ÷ÇÔÇÑ´Ù.

ABSOLUTE(exp)
ÀÌ°ÍÀº Ç¥Çö½Ä expÀÇ Àý´ë°ª (ºñ-À½¼ö¿Í´Â ¹Ý´ë·Î Àç¹èÄ¡-ºÒ°¡)À» ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº ½É¹ú °ªµéÀÌ ÀϹÝÀûÀ¸·Î ¼½¼Ç-»ó´ëÀûÀÎ ¼½¼Ç Á¤ÀǾȿ¡¼­ ¾î¶² ½É¹ú¿¡ Àý´ë°ªÀ» ÇÒ´çÇÏ´Â µ¥ ÁÖ·Î À¯¿ëÇÏ´Ù.
ADDR(section)
sectionÀ̶ó´Â À̸§ÀÇ Àý´ë ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù. ¿©·¯ºÐÀÇ ½ºÅ©¸³Æ®´Â ¹Ýµå½Ã ÀÌÀü¿¡ ±× ¼½¼ÇÀÇ À§Ä¡¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ symbol_1¿Í symbol_2´Â µ¿ÀÏÇÑ °ªµé·Î ÇÒ´çµÈ °ÍÀÌ´Ù:
SECTIONS{ ...
  .output1 :
    { 
    start_of_output_1 = ABSOLUTE(.);
    ...
    }
  .output :
    {
    symbol_1 = ADDR(.output1);
    symbol_2 = start_of_output_1;
    }
... }
LOADADDR(section)
section¶ó´Â À̸§ÀÇ Àý´ë ·Îµù ÁÖ¼Ò(absolute load address)¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ°ÍÀº ÀϹÝÀûÀ¸·Î ADDR¿Í µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÀÌ°ÍÀº AT¶ó´Â Å°¿öµå°¡ ¼½¼Ç Á¤ÀÇ¿¡¼­ »ç¿ëµÈ´Ù¸é ¼­·Î ´Ù¸¦ ¼ö ÀÖ´Ù (see section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)).
ALIGN(exp)
´ÙÀ½ exp ¹Ù¿î´õ¸®¿¡ Á¤·ÄµÈ ÇöÀç À§Ä¡ Ä«¿îÅÍ (.)ÀÇ °á°ú¸¦ ¸®ÅÏÇÑ´Ù. exp´Â ¹Ýµå½Ã ±×°ÍÀÇ °ªÀÌ 2ÀÇ ¸îÁ¦°öÀΠǥÇö½ÄÀ̾î¾ß ÇÑ´Ù. ÀÌ°ÍÀº
(. + exp - 1) & ~(exp - 1)
°ú µ¿ÀÏÇÏ´Ù. ALIGNÀº À§Ä¡ Ä«¿îÅÍÀÇ °ªÀ» º¯°æÇÏÁö ¾Ê´Â´Ù---ÀÌ°ÍÀº ´ÜÁö ±×°Í¿¡ ´ëÇؼ­ »ê¼ú¿¬»ê¸¸À» ¼öÇàÇÑ´Ù. ¿¹¸¦ µé¾î¼­ Ãâ·Â .data ¼½¼ÇÀ» Á÷Àü ¼½¼Ç µÚÀÇ ´ÙÀ½ 0x2000 ¹ÙÀÌÆ® °æ°è¿¡ Á¤·ÄÇϱâ À§Çؼ­, ±×¸®°í ±× ¼½¼Ç¿¡ ÀÖ´Â ¾î¶² º¯¼ö¸¦ ÀÔ·Â ¼½¼Çµé µÚÀÇ ´ÙÀ½ 0x8000 °æ°è¿¡ Á¤·ÄÇϱâ À§Çؼ­´Â:
SECTIONS{ ...
  .data ALIGN(0x2000): {
    *(.data)
    variable = ALIGN(0x8000);
  }
... }
¿¹Á¦ÀÇ ALIGN ù¹ø° »ç¿ëÀº ¾î¶² ¼½¼ÇÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÑ´Ù. ¿Ö³Ä¸é ÀÌ°ÍÀº ¼½¼Ç Á¤ÀÇÀÇ ¿É¼ÇÀÎ start ¼Ó¼ºÀ¸·Î½á »ç¿ëµÇ¾ú±â ¶§¹®ÀÌ´Ù (see section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)). µÎ¹ø° »ç¿ëÀº ´Ü¼øÇÏ°Ô ¾î¶² º¯¼öÀÇ °ªÀ» Á¤ÀÇÇÑ´Ù. ³»Àå NEXT´Â ALIGN¿¡ ¾ÆÁÖ ¹ÐÁ¢ÇÏ°Ô ¿¬°áµÇ¾î ÀÖ´Ù.
DEFINED(symbol)
¸µÄ¿ÀÇ ±Û·Î¹ú ½É¹ú Å×À̺í¾È¿¡ symbolÀÌ ÀÖ°í Á¤ÀǵǾî ÀÖÀ¸¸é 1À» ¸®ÅÏÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù. ¿©·¯ºÐÀº ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇؼ­ ½É¹úµé¿¡ ´ëÇÑ µðÆúÆ® °ªµéÀ» Á¦°øÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ´ÙÀ½ ¸í·É-ÆÄÀÏ Á¶°¢Àº ±Û·Î¹ú ½É¹ú begin¸¦ .text ¼½¼Ç¿¡ Àִ ù¹ø° À§Ä¡¿¡ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù---±×·¯³ª beginÀ̶ó°í ºÒ¸®´Â ¾î¶² ½É¹úÀÌ ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é ±× °ªÀº º¸Á¸µÈ´Ù:
SECTIONS{ ...
  .text : {
    begin = DEFINED(begin) ? begin : . ;
    ...
  }
... }
NEXT(exp)
expÀÇ ¹è¼öÀÎ ÇÒ´çµÇÁö ¾ÊÀº ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ALIGN(exp)¿¡ ¹ÐÁ¢ÇÏ°Ô ¿¬°áµÇ¾î ÀÖ´Ù; ¿©·¯ºÐÀÌ ºñ¿¬¼Ó(discontinuous) ¸Þ¸ð¸®¸¦ Ãâ·Â ÆÄÀÏÀ» À§ÇØ Á¤ÀÇÇϱâ À§Çؼ­ MEMORY ¸í·ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é µÎ ÇÔ¼öµéÀº ¼­·Î µ¿ÀÏÇÏ´Ù.
SIZEOF(section)
section¶ó´Â À̸§À» °¡Áø ¼½¼ÇÀÇ Å©±â¸¦, ±× ¼½¼ÇÀÌ ÇÒ´çµÇ¾ú´Ù¸é, ¹ÙÀÌÆ® ´ÜÀ§·Î ¸®ÅÏÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¿¡¼­ symbol_1°ú symbol_2´Â µ¿ÀÏÇÑ °ªµé·Î ÇÒ´çµÈ´Ù:
SECTIONS{ ...
  .output {
    .start = . ;
    ...
    .end = . ;
    }
  symbol_1 = .end - .start ;
  symbol_2 = SIZEOF(.output);
... }
SIZEOF_HEADERS
sizeof_headers
Ãâ·Â ÆÄÀÏÀÇ Çì´õµéÀÇ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î ¸®ÅÏÇÑ´Ù. ¿©·¯ºÐÀº, ÆäÀÌ¡À» ½±°Ô Çϱâ·Î ¼±ÅÃÇß´Ù¸é, ÀÌ·± ¼ýÀÚ¸¦ ù¹ø° ¼½¼ÇÀÇ ½ÃÀÛ ÁÖ¼Ò·Î½á »ç¿ëÇÒ ¼ö ÀÖ´Ù.
MAX(exp1, exp2)
exp1°ú exp2ÀÇ ÃÖ´ë°ªÀ» ¸®ÅÏÇÑ´Ù.
MIN(exp1, exp2)
exp1°ú exp2ÀÇ ÃÖ¼Ò°ªÀ» ¸®ÅÏÇÑ´Ù.

¼¼¹ÌÄÝ·Ð(Semicolons)

¼¼¹ÌÄÝ·Ð (";")Àº ´ÙÀ½°ú °°Àº Àå¼Ò¿¡¼­ ÇÊ¿äÇÏ´Ù. ¸ðµç ´Ù¸¥ Àå¼Ò¿¡¼­ ±×µéÀº ½É¹ÌÀû ÀÌÀ¯(aesthetic reasons)·Î ³ªÅ¸³¯ ¼ö ÀÖÁö¸¸ ±×·¸Áö ¾Ê´Ù¸é ¹«½ÃµÈ´Ù.

Assignment
¼¼¹ÌÄÝ·ÐÀº ÇÒ´ç Ç¥Çö½Ä µÚ¿¡ ¹Ýµå½Ã ³ªÅ¸³ª¾ß ÇÑ´Ù. See section ÇÒ´ç: ½É¹ú Á¤ÀÇ(Assignment: Defining Symbols)
PHDRS
¼¼¹ÌÄÝ·ÐÀº PHDRS ¹®ÀåÀÇ ¸¶Áö¸·¿¡ ³ªÅ¸³ª¾ß ÇÑ´Ù. See section ELF ÇÁ·Î±×·¥ Çì´õ(ELF Program Headers)

¸Þ¸ð¸® ·¹À̾ƿô(Memory Layout)

¸µÄ¿ÀÇ µðÆúÆ® ¼³Á¤Àº ¸ðµç »ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ÇÒ´çÀ» Çã¿ëÇÑ´Ù. ¿©·¯ºÐÀº ÀÌ ¼³Á¤À» MEMORY ¸í·ÉÀ» »ç¿ëÇؼ­ ¿À¹ö¶óÀ̵åÇÒ ¼ö ÀÖ´Ù. MEMORY ¸í·ÉÀº Ÿ°Ù³»ÀÇ ¸Þ¸ð¸® ºí·°µéÀÇ Å©±â¿Í À§Ä¡¸¦ ±â¼úÇÑ´Ù. ÀÌ°ÍÀ» ÁÖÀDZí°Ô »ç¿ëÇÔÀ¸·Î½á ¿©·¯ºÐÀº ¾î¶² ¸Þ¸ð¸® ¿µ¿ªµéÀÌ ¸µÄ¿¿¡ ÀÇÇؼ­ »ç¿ëµÉ ¼ö ÀÖ´ÂÁö ±×¸®°í ¾î¶² ¸Þ¸ð¸® ¿µ¿ªµéÀ» ¹Ýµå½Ã ÇÇÇØ¾ß ÇÏ´ÂÁö ±â¼úÇÒ ¼ö ÀÖ´Ù. ¸µÄ¿´Â »ç¿ë°¡´ÉÇÑ ¿µ¿ªµé¿¡ ¸ÂÃß±â À§Çؼ­ ¼½¼ÇµéÀ» ¼­·Î ¼¯Áö ¾ÊÁö¸¸ ¿ä±¸µÈ ¼½¼ÇµéÀ» Á¤È®ÇÑ ¿µ¿ªµé·Î À̵¿½ÃÅ°±â´Â ÇÑ´Ù. ±×¸®°í ±× ¿µ¿ªµéÀÌ °¡µæ Â÷°Ô µÇ¸é ¿¡·¯µéÀ» ¹ß»ýÇÑ´Ù.

¸í·É ÆÄÀÏÀº ¸¹¾Æ¾ß ÇÑ ¹ø MEMORY ¸í·ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù; ±×·¯³ª ¿©·¯ºÐÀº ¿øÇÏ´Â ¸¸Å­ ±× ¾È¿¡ ÀÖ´Â ¸Þ¸ð¸® ºí·°µéÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¹®¹ýÀº ´ÙÀ½°ú °°´Ù:

MEMORY 
  {
    name (attr) : ORIGIN = origin, LENGTH = len
    ...
  }
name
ÀÌ°ÍÀº ¸µÄ¿¿¡ ÀÇÇؼ­ ¿µ¿ª¿¡ ´ëÇÑ ÂüÁ¶¸¦ Çϱâ À§Çؼ­ ³»ºÎÀûÀ¸·Î »ç¿ëµÇ´Â À̸§ÀÌ´Ù. ÀÓÀÇÀÇ ½É¹ú À̸§µµ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¿µ¿ª À̸§µéÀº ºÐ¸®µÈ À̸§ °ø°£¿¡¼­ ÀúÀåµÇ°í ½É¹úµé, ÆÄÀÏ À̸§µé ¶Ç´Â ¼½¼Ç À̸§µé°ú Ãæµ¹ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¼­·Î ´Ù¸¥ À̸§µéÀ» »ç¿ëÇؼ­ ¿©·¯ ¿µ¿ªµéÀ» ÁöÁ¤ÇÏÀÚ.
(attr)
ÀÌ°ÍÀº ƯÁ¤ÇÑ ¸Þ¸ð¸®¸¦ ¸µÄ¿ ½ºÅ©¸³Æ®¿¡ ¾ø´Â ¼½¼ÇÀ» ³õ±â À§Çؼ­ »ç¿ëÇÒ °ÍÀΰ¡ ¸»°ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â, ¿É¼ÇÀÎ ¼Ó¼ºµéÀÇ ¸®½ºÆ®ÀÌ´Ù. À¯È¿ÇÑ ¼Ó¼º ¸®½ºÆ®´Â ¼½¼Ç ¼Ó¼ºµé°ú ÀÏÄ¡ÇÏ´Â "ALIRWX" ¹®ÀÚµé·Î ±¸¼ºµÇ¾î¾ß ÇÑ´Ù. ¼Ó¼º ¸®½ºÆ®¸¦ »ý·«ÇÏ¸é ¿©·¯ºÐÀº ÀÌ°ÍÀ» µÑ·¯½Î´Â °ýÈ£µéµµ »ý·«ÇÒ ¼ö ÀÖ´Ù. ÇöÀç Áö¿øµÇ´Â ¼Ó¼ºµéÀº ´ÙÀ½°ú °°´Ù:
`Letter'
Section Attribute
`R'
Àбâ-Àü¿ë ¼½¼Ç
`W'
Àбâ/¾²±â ¼½¼Ç
`X'
½ÇÇà Äڵ带 ´ã°í ÀÖ´Â ¼½¼Ç
`A'
ÇÒ´çµÈ ¼½¼Ç
`I'
ÃʱâÈ­µÈ ¼½¼Ç
`L'
I¿Í µ¿ÀÏ.
`!'
´ÙÀ½¿¡ ¿À´Â ¼Ó¼º ÀǹÌÀÇ ¹Ý´ë.
origin
ÀÌ°ÍÀº ¹°¸®Àû ¸Þ¸ð¸®¿¡ ÀÖ´Â ¿µ¿ªÀÇ ½ÃÀÛ ÁÖ¼ÒÀÌ´Ù. ÀÌ°ÍÀº ¸Þ¸ð¸® ÇÒ´çÀÌ ÀÌ·ç¾îÁö±â Àü¿¡ »ó¼ö·Î ¹Ýµå½Ã Æò°¡µÇ¾î¾ß Çϴ ǥÇö½ÄÀÌ´Ù. Å°¿öµå ORIGIN´Â org³ª o·Î ¾à½Ä Ç¥ÇöµÉ ¼ö ÀÖ´Ù (±×·¯³ª ¿¹¸¦ µé¾î `ORG'Àº ¾Æ´Ï´Ù).
len
ÀÌ°ÍÀº ÇØ´ç ¿µ¿ª(Ç¥Çö½Ä)ÀÇ ¹ÙÀÌÆ® ´ÜÀ§ Å©±âÀÌ´Ù. Å°¿öµå LENGTH´Â len³ª l·Î ¾à½Ä Ç¥ÇöµÉ ¼ö ÀÖ´Ù.

¿¹¸¦ µé¾î¼­ ¸Þ¸ð¸®°¡ ÇÒ´ç---Çϳª´Â 0ºÎÅÍ ½ÃÀÛÇؼ­ 256 KB¸¦, ´Ù¸¥ °ÍÀº 0x40000000 ºÎÅÍ ½ÃÀÛÇؼ­ 4 MB¸¦--À» À§Çؼ­ »ç¿ë °¡´ÉÇÑ µÎ ¿µ¿ªµéÀ» »ç¿ëÇÑ´Ù°í ÁöÁ¤ÇÏ·Á°í ÇÑ´Ù°í °¡Á¤ÇÏÀÚ. rom ¸Þ¸ð¸® ¿µ¿ªÀº Àбâ-Àü¿ëÀ̰ųª Äڵ带 ´ã°í ÀÖ´Â ¸í½ÃÀûÀÎ ¸Þ¸ð¸® ·¹Áö½ºÅÍ ¾øÀÌ ¸ðµç ¼½¼ÇµéÀ» ȹµæÇÒ °ÍÀÌÁö¸¸ ram ¸Þ¸ð¸® ¿µ¿ªÀº ±× ¼½¼ÇµéÀ» ȹµæÇÒ °ÍÀÌ´Ù.

MEMORY 
  {
  rom (rx)  : ORIGIN = 0, LENGTH = 256K
  ram (!rx) : org = 0x40000000, l = 4M
  }

ÀÏ´Ü mem¶ó´Â À̸§ÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» Á¤ÀÇÇß´Ù¸é, SECTIONS ¸í·É¿¡¼­ `>mem'·Î ³¡³ª´Â ¸í·ÉÀ» »ç¿ëÇÔÀ¸·Î½á ƯÁ¤ÇÑ Ãâ·Â ¼½¼ÇÀ» ´Ù¸¥ °÷À¸·Î º¸³¾¼ö ÀÖ´Ù (see section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)). ¾î¶² ¿µ¿ª¿¡ º¸³»Á®¼­ °áÇÕµÈ Ãâ·Â ¼½¼ÇµéÀÌ ±× ¿µ¿ª¿¡ ´ëÇؼ­ ³Ê¹« Å©´Ù¸é ¸µÄ¿´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù.

Ãâ·Â ¼½¼Ç ÁöÁ¤(Specifying Output Sections)

SECTIONS ¸í·ÉÀº ¾îµð¿¡ ÀÔ·Â ¼½¼ÇµéÀÌ Ãâ·Â ¼½¼Çµé·Î Á¤È®ÇÏ°Ô ³õÀÏ °ÍÀΰ¡¿Í Ãâ·Â ÆÄÀÏ¿¡¼­ÀÇ ±×µéÀÇ ¼ø¼­, ±×¸®°í ±×µéÀÌ ÇÒ´çµÈ Ãâ·Â ¼½¼ÇµéÀÌ ¹«¾ùÀΰ¡¸¦ Á¦¾îÇÑ´Ù.

¿©·¯ºÐÀº ¸¹¾Æ¾ß Çѹø SECTIONS ¸í·ÉÀ» ½ºÅ©¸³Æ® ÆÄÀÏ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ±× ¾È¿¡ ¿©·¯ºÐÀÌ ¿øÇÏ´Â ¸¸Å­ÀÇ ¹®ÀåµéÀ» ³ÖÀ» ¼ö ÀÖ´Ù. SECTIONS ¸í·É ¾È¿¡ ÀÖ´Â ¹®ÀåµéÀº ´ÙÀ½°ú °°Àº °Íµé ÁßÀÇ Çϳª°¡ µÉ ¼ö ÀÖ´Ù:

ù¹ø° µÎ ÀÛ¾÷µé---¿£Æ®¸® Æ÷ÀÎÆ®¸¦ Á¤ÀÇÇÏ°í ½É¹úµéÀ» Á¤ÀÇÇÏ´Â °Í---À» SECTIONS ¸í·É ¹Ù±ù¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù: see section ¿£Æ®¸® Æ÷ÀÎÆ®(The Entry Point) ±×¸®°í section ÇÒ´ç: ½É¹ú Á¤ÀÇ(Assignment: Defining Symbols). ±×µéÀº ½ºÅ©¸³Æ®¸¦ Àб⠽±µµ·Ï ÇÏ´Â ÆíÀǸ¦ À§Çؼ­ ¿©±â¿¡ Çã¿ëµÇ¾ú´Ù. ±×·¡¼­ ±× ½É¹úµé°ú ¿£Æ®¸® Æ÷ÀÎÆ®´Â ¿©·¯ºÐÀÇ Ãâ·Â-ÆÄÀÏ ·¹À̾ƿôÀÇ ÀÇ¹Ì ÀÖ´Â À§Ä¡µé¿¡¼­ Á¤ÀÇµÉ ¼ö ÀÖ´Ù.

SECTIONS ¸í·ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ¸µÄ¿´Â °¢ ÀÔ·Â ¼½¼ÇÀ» µ¿ÀÏÇÑ À̸§ÀÇ Ãâ·Â ¼½¼Ç¿¡, ±× ¼½¼ÇµéÀÌ ÀÔ·Â ÆÄÀϵ鿡¼­ óÀ½À¸·Î ³ªÅ¸³­ ¼ø¼­´ë·Î ³õ´Â´Ù. ¸ðµç ÀÔ·Â ¼½¼ÇµéÀÌ Ã¹¹ø° ÆÄÀÏ¿¡ ´Ù ÀÖÀ¸¸é, ¿¹¸¦ µé¾î¼­ Ãâ·Â ÆÄÀÏÀÇ ¼½¼ÇµéÀÇ ¼ø¼­´Â ù¹ø° ÀÔ·Â ÆÄÀ̸£ÀÌ ¼ø¼­¿Í ÀÏÄ¡ÇÒ °ÍÀÌ´Ù.

¼½¼Ç Á¤ÀÇ(Section Definitions)

SECTIONS ¸í·É¿¡¼­ °¡Àå ÀÚÁÖ »ç¿ëµÇ´Â ¹®ÀåÀº section definitionÀÌ´Ù. ÀÌ°ÍÀº Ãâ·Â ¼½¼ÇÀÇ ¼Ó¼ºµéÀ» ÁöÁ¤ÇÑ´Ù: ÀÌ°ÍÀÇ À§Ä¡, ÇÒ´ç, ³»¿ë, ä¿ì±â ÆÐÅÏ, ±×¸®°í Ÿ°Ù ¸Þ¸ð¸® ¿µ¿ª. ÀÌ·± ½ºÆåÀÇ ´ëºÎºÐÀº ¿É¼ÇÀÌ´Ù; ¾î¶² ¼½¼Ç Á¤ÀÇ °¡Àå °£´ÜÇÑ ÇüÅ´ ´ÙÀ½°ú °°´Ù

SECTIONS { ...
  secname : {
    contents
  }
... }

secnameÀº Ãâ·Â ¼½¼ÇÀÇ À̸§ÀÌ°í contents´Â °Å±â¿¡ µé¾î°¥ °ÍÀÌ ¹«¾ùÀΰ¡¿¡ ´ëÇÑ ½ºÆåÀÌ´Ù---¿¹¸¦ µé¾î¼­ ÀÔ·Â ÆÄÀϵéÀÇ ¸®½ºÆ®³ª ÀÔ·Â ÆÄÀϵéÀÇ ¼½¼Çµé (see section ¼½¼Ç ³õ±â(Section Placement)). secname ÁÖº¯¿¡´Â °ø¹é ¹®ÀÚ°¡ ÀÖ¾î¾ß ÇÑ´Ù. ±×·¸°Ô ¼½¼Ç À̸§ÀÌ ±¸ºÐµÈ´Ù. ´Ù¸¥ °ø¹é¹®ÀÚ´Â ¿É¼ÇÀÌ´Ù. ±×·¯³ª ÄÝ·Ð `:'°ú Áß°ýÈ£ `{}'°¡ ÇÊ¿äÇÏ´Ù.

secname´Â ¹Ýµå½Ã ¿©·¯ºÐÀÇ Ãâ·Â Æ÷¸äÀÇ Á¦¾à Á¶°Ç(constraints)°ú ÀÏÄ¡ÇØ¾ß ÇÑ´Ù. a.out¿Í °°ÀÌ Á¦ÇÑµÈ °³¼öÀÇ ¼½¼Çµé¸¸À» Áö¿øÇÏ´Â Æ÷¸ä¿¡¼­ ±× À̸§Àº ¹Ýµå½Ã ±× Æ÷¸ä¿¡ ÀÇÇؼ­ Áö¿øµÇ´Â À̸§µé(¿¹¸¦ µé¾î¼­ a.out´Â .text, .data, ¶Ç´Â .bss¸¸À» Çã¿ëÇÑ´Ù) ÁßÀÇ ÇϳªÀ̾î¾ß ÇÑ´Ù. Ãâ·Â Æ÷¸äÀÌ ÀÓÀÇ °³¼öÀÇ ¼½¼ÇµéÀ» Áö¿øÇÏÁö¸¸ ÀÓÀÇ °³¼ö¸¸ Çã¿ëÇÏ°í À̸§µéÀº ±×·¸Áö ¾Ê´Ù¸é(Oasys¿Í °°Àº °æ¿ì), À̸§Àº ¹Ýµå½Ã µû¿ÈÇ¥·Î ¹­ÀÎ ¼ýÀÚ ¹®ÀÚ¿­(quoted numeric string)À¸·Î Á¦°øµÇ¾î¾ß ÇÑ´Ù. ¼½¼Ç À̸§Àº ÀÓÀÇÀÇ ¹®ÀÚ¿­·Î ÀÌ·ç¾îÁú ¼ö ÀÖÁö¸¸ Ç¥ÁØ ld ½É¹ú À̸§ ¹®¹ý¿¡ ¸ÂÁö ¾Ê´Â À̸§Àº ¹Ýµå½Ã µû¿ÈÇ¥·Î ¹­¿©¾ß ÇÑ´Ù. See section ½É¹ú À̸§(Symbol Names).

Ư¼öÇÑ secnameÀÎ `/DISCARD/'´Â ÀÔ·Â ¼½¼ÇµéÀ» ¹ö¸®´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. `/DISCARD/'¶ó´Â À̸§ÀÇ Ãâ·Â ¼½¼Ç¿¡ ÇÒ´çµÈ ÀÓÀÇÀÇ ¼½¼ÇµéÀº ¸¶Áö¸· ¸µÅ© Ãâ·Â¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â´Ù.

¸µÄ¿´Â ³»¿ëÀ» °¡ÁöÁö ¾Ê´Â Ãâ·Â ¼½¼ÇµéÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. ÀÌ°ÍÀº Á¸ÀçÇϰųª Á¸ÀçÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Â ÀÔ·Â ¼½¼ÇµéÀ» ÂüÁ¶ÇÒ ¶§ ÆíÀǸ¦ À§ÇÑ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­,

.foo { *(.foo) }

ÀÌ°ÍÀº Àû¾îµµ ÇÑ °³ÀÇ ÀÔ·Â ÆÄÀÏ¿¡ `.foo' ¼½¼ÇÀÌ Á¸ÀçÇÑ´Ù¸é Ãâ·Â ÆÄÀÏ¿¡ `.foo' ¼½¼ÇÀ» »ý¼ºÇÒ »ÓÀÌ´Ù.

¼½¼Ç ³õ±â(Section Placement)

¼½¼Ç Á¤ÀÇ¿¡¼­ ƯÁ¤ ÀÔ·Â ÆÄÀϵéÀ» ³Ö¾î¼­, ƯÁ¤ ÀÔ·Â-ÆÄÀÏ ¼½¼ÇµéÀ» ³Ö¾î¼­, ¶Ç´Â ÀÌ µÎ °¡Áö¸¦ ÇÕÇؼ­, Ãâ·Â ¼½¼Ç ¼½¼ÇÀÇ ³»¿ë¹°À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿©·¯ºÐÀº ¶ÇÇÑ ÀÌ ¼½¼Ç¿¡ ÀÓÀÇ µ¥ÀÌÅ͸¦ ³õÀ» ¼ö ÀÖ°í ¼½¼Ç ½ÃÀÛ¿¡ »ó´ëÀûÀÎ ½É¹úµéÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

¼½¼Ç Á¤ÀÇÀÇ contentsÀº ´ÙÀ½°ú °°Àº Á¾·ùÀÇ ¹®Àåµé Áß ÀÓÀÇÀÇ °ÍÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. °ø¹é ¹®ÀÚ·Î ´Ù¸¥ °Íµé°ú ±¸ºÐµÈ, ´ÜÀÏ ¼½¼Ç Á¤ÀÇ¿¡ À̵é Áß ¿øÇÏ´Â ¸¸Å­ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.

filename
´Ü¼øÇÏ°Ô ÇöÀç Ãâ·Â ¼½¼Ç¿¡ ³õÀÏ ¼ö ÀÖµµ·Ï ƯÁ¤ÇÑ ÀÔ·Â ÆÄÀÏÀÇ À̸§À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù; @ÀÌ ÆÄÀÏ¿¡¼­ emph{¸ðµç} ¼½¼ÇµéÀº ÇöÀç ¼½¼Ç Á¤ÀÇ¿¡ ³õÀÏ °ÍÀÌ´Ù. ±× ÆÄÀÏ À̸§ÀÌ ¸í½ÃÀûÀÎ ¼½¼Ç À̸§ ¸®½ºÆ®¿Í ÇÔ²² ÀÌ¹Ì ´Ù¸¥ ¼½¼Ç Á¤ÀÇ¿¡¼­ ¾ð±ÞµÇ¾ú´Ù¸é ¾ÆÁ÷ ÇÒ´çµÇÁö ¾ÊÀº ±×·± ¼½¼ÇµéÀÌ »ç¿ëµÈ´Ù. ƯÁ¤ÇÑ ÆÄÀÏµé ¸®½ºÆ®¸¦ À̸§À¸·Î ÁöÁ¤ÇÏ·Á¸é:
.data : { afile.o bfile.o cfile.o }
ÀÌ ¿¹Á¦´Â ´Ù¼öÀÇ ¹®ÀåµéÀÌ ¼½¼Ç Á¤ÀÇ ³»¿ë¹°¾È¿¡ Æ÷Ç﵃ ¼ö ÀÖ´Ù´Â °Íµµ ¿¹½ÃÇÑ´Ù. ¿Ö³Ä¸é °¢ ÆÄÀÏ À̸§ÀÌ ºÐ¸®µÈ ¹®ÀåÀ̱⠶§¹®ÀÌ´Ù.
filename( section )
filename( section , section, ... )
filename( section section ... )
ÇöÀç Ãâ·Â ¼½¼Ç¿¡ »ðÀÔÇϱâ À§Çؼ­ ÀÔ·Â ÆÄÀϵé·ÎºÎÅÍ Çϳª ÀÌ»óÀÇ ¼½¼ÇµéÀÇ À̸§À» ÁöÁ¤ÇÒ ¼ö ÀÕ´Ù. ÀÔ·Â-ÆÄÀÏ ¼½¼Çµé ¸®½ºÆ®¸¦ °ýÈ£ ¾È¿¡ ÁöÁ¤ÇÏ°íÀÚ ÇÑ´Ù¸é ±× ¼½¼Ç À̸§µéÀ» °ø¹é ¹®ÀÚ·Î ±¸ºÐÇÏÀÚ.
* (section)
* (section, section, ...)
* (section section ...)
¸µÅ© Á¦¾î ½ºÅ©¸³Æ®¾È¿¡¼­ ¸í½ÃÀûÀ¸·Î ÀÔ·Â ÆÄÀϵéÀÇ À̸§À» ÁöÁ¤ÇÏ´Â ´ë½Å¿¡ ld ¸í·É ¶óÀÎÀ¸·ÎºÎÅÍ ¸ðµç ÆÄÀϵéÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù: `*'¸¦ °ýÈ£·Î ¹­ÀÎ ÀÔ·Â-ÆÄÀÏ ¼½¼Ç ¸®½ºÆ® ¾Õ¿¡ ƯÁ¤ÇÑ ÆÄÀÏ À̸§ ´ë½Å »ç¿ëÇÑ´Ù. ÀÌ¹Ì À̸§À¸·Î ¸í½ÃÀûÀ¸·Î Æ÷ÇÔµÈ ¾î¶² ÆÄÀϵéÀ» °¡Áö°í ÀÖ´Ù¸é `*'Àº ¸ðµç ³²Àº ÆÄÀϵéÀ» ÂüÁ¶ÇÑ´Ù---Ãâ·Â ÆÄÀÏ¿¡ ³õÀÏ À§Ä¡°¡ ¾ÆÁ÷ Á¤ÀǵÇÁö ¾ÊÀº °Íµé. ¿¹¸¦ µé¾î¼­ Oasys ÆÄÀϷκÎÅÍ 1¿¡¼­ 4±îÁö ¼½¼ÇµéÀ» a.out ÆÄÀÏÀÇ .text ¼½¼Ç¿¡ º¹»çÇÏ·Á¸é ±×¸®°í 13°ú 14 ¼½¼ÇµéÀ» .data ¼½¼Ç¿¡ º¹»çÇÏ·Á¸é:
SECTIONS {
  .text :{
    *("1" "2" "3" "4")
  }
  
  .data :{
    *("13" "14")
  }
}
`[ section ... ]'´Â ¸ðµç ÇÒ´çµÇÁö ¾ÊÀº ÀÔ·Â ÆÄÀϵé·ÎºÎÅÍ À̸§ÀÌ ÀÖ´Â ¼½¼ÇµéÀ» ÁöÁ¤Çϱâ À§ÇÑ ´Ù¸¥ ´ë¾ÈÀ¸·Î½á Á¾Á¾ ¹Þ¾Æµé¿©Áø´Ù. ¾î¶² ´Ù¸¥ ¿î¿µ üÁ¦(VMS)´Â ÆÄÀÏ À̸§µé¿¡ °¢°ýÈ£µéÀ» Çã¿ëÇϱ⠶§¹®¿¡ ±× Ç¥±â¹ýÀº ´õÀÌ»ó Áö¿øµÇÁö ¾Ê´Â´Ù.
filename( COMMON )
*( COMMON )
ÀÌ°ÍÀº Ãâ·Â ÆÄÀÏÀÇ ¾îµð¿¡´Ù ÃʱâÈ­µÇÁö ¾ÊÀº µ¥ÀÌÅ͸¦ ÀÌ Ç¥±â¹ýÀ¸·Î ³õÀ» °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. *(COMMON) Ȧ·Î ¸ðµç ÀÔ·Â ÆÄÀϵé(ÇÒ´çµÇÁö ¾Ê´Â ÇÑ)·ÎºÎÅÍ ÃʱâÈ­µÇÁö ¾ÊÀº µ¥ÀÌÅ͸¦ ÂüÁ¶ÇÑ´Ù; filename(COMMON)´Â ƯÁ¤ÇÑ ÆÄÀϷκÎÅÍ ÃʱâÈ­µÇÁö ¾ÊÀº µ¥ÀÌÅ͸¦ ÂüÁ¶ÇÑ´Ù. µÑ ´Ù ¾îµð¿¡ ÀÔ·Â-ÆÄÀÏ ¼½¼ÇµéÀ» ³õÀ» °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â ÀϹÝÀûÀÎ ¸ÞÄ«´ÏÁòµéÀÇ Æ¯º°ÇÑ °æ¿ìµéÀÌ´Ù: ld´Â ÃʱâÈ­µÇÁö ¾ÊÀº µ¥ÀÌÅ͸¦ ÀÔ·Â ÆÄÀÏÀÇ Æ÷¸ä¿¡ »ó°ü¾øÀÌ COMMON À̶ó´Â À̸§ÀÇ ÀÔ·Â-ÆÄÀÏ ¼½¼Ç¾È¿¡ ÀÖ´Â °Íó·³ ÀÌ°ÍÀ» ÂüÁ¶ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.

ƯÁ¤ ÆÄÀÏÀ̳ª ¼½¼Ç À̸§À» »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÓÀÇÀÇ À§Ä¡¿¡ ¶ÇÇÑ ¿ÍÀϵåÄ«µå ÆÐÅÏÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸µÄ¿´Â À¯´Ð½º ½©ÀÌ ±×·¯ÇÑ °Íó·³ ¿ÍÀϵåÄ«µåµéÀ» ó¸®ÇÑ´Ù. `*' ¹®ÀÚ´Â ÀÓÀÇ °³¼öÀÇ ¹®Àڵ鿡 ´ëÀÀÇÑ´Ù. `?' ¹®ÀÚ´Â ´ÜÀÏ ¹®ÀÚ¿¡ ´ëÀÀÇÑ´Ù. `[chars]' chars Áß ÀÓÀÇÀÇ ¹®ÀÚ ´ÜÀÏ ÀνºÅϽº¿Í ´ëÀÀÇÒ °ÍÀÌ´Ù; `-' ¹®ÀÚ´Â ¹®ÀÚµéÀÇ ¹üÀ§¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. `[a-z]'°¡ ÀÓÀÇÀÇ ¼Ò¹®ÀÚ¿Í ´ëÀÀÇÏ´Â °Íó·³ ¸»ÀÌ´Ù. `\' ¹®ÀÚ´Â ´ÙÀ½ ¹®ÀÚ¸¦ Àοë(quote)ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.

ÆÄÀÏ À̸§ÀÌ ¿ÍÀϵåÄ«µå¿Í ´ëÁ¶µÉ ¶§ ¿ÍÀϵåÄ«µå ¹®ÀÚµéÀº `/' ¹®ÀÚ¿Í ºñ±³µÇÁö ¾ÊÀ» °ÍÀÌ´Ù(À¯´Ð½º¿¡¼­ µð·ºÅ͸® À̸§µéÀ» ±¸ºÐÇÏ´Â µ¥ »ç¿ëµÇ´Â ¹®ÀÚ). ´ÜÀÏ `*' ¹®ÀÚ·Î ÀÌ·ç¾îÁø ÆÐÅÏÀº ¿¹¿ÜÀÌ´Ù; ÀÌ°ÍÀº Ç×»ó ÀÓÀÇÀÇ ÆÄÀÏ À̸§°ú ÀÏÄ¡µÈ´Ù. ¼½¼Ç À̸§¿¡¼­ ¿ÍÀϵåÄ«µå ¹®ÀÚµéÀº `/' ¹®ÀÚ¿Í ºñ±³µÉ °ÍÀÌ´Ù.

¿ÍÀϵåÄ«µåµéÀº ¸í·ÉÇà¿¡¼­ ¸í½ÃÀûÀ¸·Î ÁöÁ¤µÈ, ÆÄÀϵ鸸 ã´Â´Ù. ¸µÄ¿´Â ¿ÍÀϵåÄ«µåµéÀ» È®ÀåÇؼ­ µð·ºÅ͸®µéÀ» °Ë»öÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ¸µÄ¿ ½ºÅ©¸³Æ® ¾È¿¡¼­ ´Ü¼øÇÑ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÑ´Ù¸é---¿ÍÀϵåÄ«µå¸¦ ÀüÇô °¡ÁöÁö ¾Ê´Â À̸§--- ±×¸®°í ±× ÆÄÀÏ À̸§ÀÌ ¶ÇÇÑ ¸í·ÉÇà¿¡¼­ ÁöÁ¤µÇÁö ¾Ê¾Ò´Ù¸é ¸µÄ¿´Â ±× ÆÄÀÏÀÌ ¸í·ÉÇà¿¡ ³ªÅ¸³­ °Íó·³ ±× ÆÄÀÏÀ» ¿­·Á°í ½ÃµµÇÒ °ÍÀÌ´Ù.

´ÙÀ½ ¿¹Á¦¿¡¼­ ¸í·É ½ºÅ©¸³Æ®´Â Ãâ·Â ÆÄÀÏÀ» ¼¼°³ÀÇ ¿¬¼ÓµÈ ¼½¼Çµé, .text, .data, ±×¸®°í .bss¾ÈÀ¸·Î Á¤·ÄÇÑ´Ù. ÀÌµé °¢°¢¿¡ ´ëÇÑ ÀÔ·ÂÀ¸·Î ¸ðµç ÀÔ·Â ÆÄÀϵé Áß¿¡¼­ ´ëÀÀµÈ À̸§À» °¡Áø °ÍÀ» ÃëÇؼ­.

SECTIONS { 
  .text : { *(.text) }
  .data : { *(.data) } 
  .bss :  { *(.bss)  *(COMMON) } 
} 

´ÙÀ½ ¿¹Á¦´Â all.o ÆÄÀϷκÎÅÍ ¼½¼Çµé ¸ðµÎ¸¦ Àо ±×µéÀ» 0x10000 À§Ä¡¿¡¼­ ½ÃÀÛÇÏ´Â Ãâ·Â ¼½¼Ç outputaÀÇ ½ÃÀÛ¿¡ ³õ´Â´Ù. foo.o ÆÄÀϷκÎÅÍ ¿Â .input1 ¼½¼Ç ¸ðµÎ´Â µ¿ÀÏÇÑ Ãâ·Â ¼½¼Ç¿¡¼­ Áï°¢ µÚµû¶ó ¿Â´Ù. foo.oÀÇ .input2 ¼½¼Ç ¸ðµÎ´Â Ãâ·Â ¼½¼Ç outputbÀ¸·Î µé¾î°¡°í ¹Ù·Î µÚ¿¡ foo1.oÀÇ .input1 ¼½¼ÇÀÌ µÚµû¸¥´Ù. ÀÓÀÇ ÆÄÀÏ¿¡¼­ ¿Â ³²Àº .input1°ú .input2 ¼½¼ÇµéÀº Ãâ·Â ¼½¼Ç outputc¿¡ ±â·ÏµÈ´Ù.

SECTIONS {
  outputa 0x10000 :
    {
    all.o
    foo.o (.input1)
    }
  outputb :
    {
    foo.o (.input2)
    foo1.o (.input1)
    }
  outputc :
    {
    *(.input1)
    *(.input2)
    }
}

ÀÌ ¿¹Á¦´Â ¿ÍÀϵåÄ«µå ÆÐÅϵéÀÌ ÆÄÀϵéÀ» ³ª´©´Â µ¥ ¾î¶»°Ô »ç¿ëµÇ´Â°¡¸¦ º¸¿©ÁØ´Ù. ¸ðµç .text ¼½¼ÇµéÀº .text¿¡ ³õÀÌ¸ç ¸ðµç .bss ¼½¼ÇµéÀº .bss¿¡ ³õÀδÙ. ´ë¹®ÀÚ·Î ½ÃÀÛÇÏ´Â ¸ðµç ÆÄÀϵ鿡 ´ëÇؼ­ .data ¼½¼ÇÀº .DATA¿¡ ³õÀδÙ; ¸ðµç ´Ù¸¥ ÆÄÀϵ鿡 ´ëÇؼ­ .data ¼½¼ÇÀº .data¿¡ ³õÀδÙ.

SECTIONS {
  .text : { *(.text) }
  .DATA : { [A-Z]*(.data) }
  .data : { *(.data) }
  .bss : { *(.bss) }
}

¼½¼Ç µ¥ÀÌÅÍ Ç¥Çö½Ä(Section Data Expressions)

µ¥ÀÌÅÍ´Â ÀÔ·Â ÆÄÀϵ鿡¼­ °¡Á® ¿Í¼­ ¿©·¯ºÐÀÇ Ãâ·Â ÆÄÀÏ¿¡ ¾Õ¿¡¼­ ¸»ÇÑ(foregoing) ¹®ÀåµéÀÌ Á¤·ÄÇÑ´Ù. µ¥ÀÌÅ͸¦ Á÷Á¢ ¸µÅ© ¸í·É ½ºÅ©¸³Æ®·ÎºÎÅÍ Ãâ·Â ¼½¼Ç¿¡ ³õ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ÀÌ·± Ãß°¡ÀÇ ¹®Àåµé ´ëºÎºÐÀÌ Ç¥Çö½ÄµéÀ» Æ÷ÇÔÇÑ´Ù (see section Expressions). ºñ·Ï ÀÌ·± ¹®ÀåµéÀÌ º¸¿©ÁÖ±â ÆíÇÏ°Ô ºÐ¸®µÇ¾î ³ªÅ¸³ª ÀÖÁö¸¸ ±×·± ºÐ¸®´Â SECTIONS ¸í·ÉÀÇ ¼½¼Ç Á¤ÀǾȿ¡¼­ ÀüÇô ºÒÇÊ¿äÇÏ´Ù; ¿©·¯ºÐÀº ¿ì¸®°¡ ¹æ±Ý ±â¼úÇÑ ¹®Àåµé Áß¿¡¼­ ¾î¶² °Íµµ ÀÚÀ¯·ÎÀÌ ¼­·Î ¼¯À» ¼ö ÀÖ´Ù.

CREATE_OBJECT_SYMBOLS
ÀÌ°ÍÀº ÇöÀç ¼½¼Ç¿¡ °¢ ÀÔ·Â ÆÄÀÏ¿¡ ´ëÇÑ ½É¹úÀ» »ý¼ºÇÏ°í ±× ÀÔ·Â ÆÄÀϷκÎÅÍ ÀÛ¼ºµÈ µ¥ÀÌÅÍÀÇ Ã¹¹ø° ¹ÙÀÌÆ®ÀÇ ÁÖ¼Ò·Î ¼³Á¤ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ a.out ÆÄÀϵéÀÇ °æ¿ì °¢ ÀÔ·Â ÆÄÀÏ¿¡ ´ëÇÑ ½É¹úÀ» °¡Áö´Â °ÍÀÌ ÆíÇÏ´Ù. ¿©·¯ºÐÀº ÀÌ°ÍÀ», Ãâ·Â ¼½¼Ç .text¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÔÀ¸·Î½á, ¼ºÃëÇÒ ¼ö ÀÖ´Ù:
SECTIONS {
  .text 0x2020 :
     {
    CREATE_OBJECT_SYMBOLS
    *(.text)
    _etext = ALIGN(0x2000);
    }
  ...
}
sample.ld°¡ ÀÌ ½ºÅ©¸³Æ®¸¦ Æ÷ÇÔÇÑ ÆÄÀÏÀ̶ó¸é, a.o, b.o, c.o, ±×¸®°í d.o´Â ´ÙÀ½°ú °°Àº ³»¿ëÀ» °¡Áø ³× °³ÀÇ ÀÔ·Â ÆÄÀϵéÀ̶ó¸é---
/* a.c */

afunction() { }
int adata=1;
int abss;
`ld -M -T sample.ld a.o b.o c.o d.o' ´Â ´ÙÀ½°ú °°ÀÌ ¿ÀºêÁ§Æ® ÆÄÀÏ À̸§µé°ú ÀÏÄ¡ÇÏ´Â ½É¹úµéÀ» °¡Áö´Â ¸Ê ÆÄÀÏÀ» »ý¼ºÇÒ °ÍÀÌ´Ù:
00000000 A __DYNAMIC
00004020 B _abss
00004000 D _adata
00002020 T _afunction
00004024 B _bbss
00004008 D _bdata
00002038 T _bfunction
00004028 B _cbss
00004010 D _cdata
00002050 T _cfunction
0000402c B _dbss
00004018 D _ddata
00002068 T _dfunction
00004020 D _edata
00004030 B _end
00004000 T _etext
00002020 t a.o
00002038 t b.o
00002050 t c.o
00002068 t d.o
symbol = expression ;
symbol f= expression ;
symbolÀº ÀÓÀÇÀÇ ½É¹ú À̸§ÀÌ´Ù (see section ½É¹ú À̸§(Symbol Names)). "f="´Â »ê¼ú ¹× ÇÒ´çÀ» ÇÕ¼ºÇÑ &= += -= *= /= ¿¬»êÀÚµé ÁßÀÇ ÀÓÀÇÀÇ °ÍÀ» °¡¸®Å²´Ù. ƯÁ¤ ¼½¼Ç Á¤ÀÇ ¾È¿¡¼­ ½É¹ú¿¡ °ªÀ» ÇÒ´çÇÒ ¶§ ±× °ªÀº ¼½¼ÇÀÇ ½ÃÀÛ¿¡ »ó´ëÀûÀÌ´Ù (see section ÇÒ´ç: ½É¹ú Á¤ÀÇ(Assignment: Defining Symbols)). ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÏ¿´´Ù¸é
SECTIONS {
  abs = 14 ;
  ...
  .data : { ... rel = 14 ; ... }
  abs2 = 14 + ADDR(.data);
  ...
}
abs¿Í rel´Â µ¿ÀÏÇÑ °ªÀ» °¡ÁöÁö ¾Ê´Â´Ù; rel´Â abs2¿Í µ¿ÀÏÇÑ °ªÀ» °¡Áø´Ù.
BYTE(expression)
SHORT(expression)
LONG(expression)
QUAD(expression)
SQUAD(expression)
¼½¼Ç Á¤ÀÇ¿¡ ÀÌ·± ³× ¹®Àåµé Áß Çϳª¸¦ Æ÷ÇÔÇÔÀ¸·Î½á ¸í½ÃÀûÀ¸·Î ±× ¼½¼ÇÀÇ ÇöÀç ÁÖ¼Ò¿¡ 1, 2, 4, 8 unsigned ¶Ç´Â 8 signed ¹ÙÀÌÆ®µéÀ» ³õÀ» ¼ö ÀÖ´Ù. 64 ºñÆ® È£½ºÆ®³ª Ÿ°ÙÀ» »ç¿ëÇÑ´Ù¸é QUAD¿Í SQUAD´Â µ¿ÀÏÇÏ´Ù. È£½ºÆ®¿Í Ÿ°ÙÀÌ µÑ ´Ù 32ºñÆ®À̶ó¸é QUAD´Â unsigned 32 ºñÆ® °ªÀ» »ç¿ëÇÏ°í SQUAD ±âÈ£´Â ±× °ªÀ» È®ÀåÇÑ´Ù. µÑ ´Ù ±× °ª¤·¤© ÀÛ¼ºÇÒ ¶§ Á¤È®ÇÑ endianness¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ¸ÖƼ-¹ÙÀÌÆ® °ªµéÀº ¹ÙÀÌÆ® ¼ø¼­°¡ Ãâ·Â ÆÄÀÏ Æ÷¸ä¿¡ ÀûÀýÇÏ´Ù¸é ¹«¾ùÀÌµç ±× ¹ÙÀÌÆ® ¼ø¼­·Î Ç¥ÇöµÈ´Ù (see section BFD).
FILL(expression)
ÇöÀç ¼½¼Ç¿¡ ´ëÇؼ­ "ä¿ì±â ÆÐÅÏ(fill pattern)"À» ÁöÁ¤ÇÑ´Ù. ±× ¼½¼Ç¾È¿¡¼­ ±×·¸Áö ¾ÊÀ¸¸é ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» ¸Þ¸ð¸® ¿µ¿ªµé(¿¹¸¦ µé¾î¼­ À§Ä¡ Ä«¿îÅÍ `.'¿¡ »õ·Î¿î °ªÀ» ÇÒ´çÇÔÀ¸·Î½á °Ç³Ê ¶Ú ¿µ¿ªµé)Àº expression ¸Å°³º¯¼ö·ÎºÎÅÍ ¿Â µÎ LSB(least significant bytes)µé·Î ä¿öÁø´Ù. FILL ¹®ÀåÀº ¼½¼Ç Á¤ÀÇ¿¡ ÀÖ´Â À§Ä¡ µÚ¿¡ ¸Þ¸ð¸® À§Ä¡µéÀ» Ä¿¹öÇÑ´Ù; ÇÑ °³ ÀÌ»óÀÇ FILL ¹®ÀåÀ» Æ÷ÇÔÇÔÀ¸·Î½á Ãâ·Â ¼½¼ÇÀÇ ¼­·Î ´Ù¸¥ ºÎºÐµéÀ» ÆÐÅϵé·Î ä¿ï ¼ö ÀÖ´Ù.

¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)

´ÙÀ½Àº ¸ðµç ¿É¼ÇÀÎ ºÎºÐµéÀ» Æ÷ÇÔÇÑ, ¼½¼Ç Á¤ÀÇÀÇ ¿ÏÀüÇÑ ¹®¹ýÀÌ´Ù:

SECTIONS {
...
secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
  { contents } >region :phdr =fill
...
}

secname°ú contentsÀÌ ÇÊ¿äÇÏ´Ù. contents¿¡ ´ëÇؼ­´Â See section ¼½¼Ç Á¤ÀÇ(Section Definitions), ±×¸®°í section ¼½¼Ç ³õ±â(Section Placement). ³²Àº ¿ä¼Òµé---start, BLOCK(align), (NOLOAD), AT ( ldadr ), >region, :phdr, ±×¸®°í =fill---Àº ¸ðµÎ ¿É¼ÇÀÌ´Ù.

start
start ´õÇϱ⠼½¼Ç À̸§À» ÁöÁ¤ÇÔÀ¸·Î½á Ãâ·Â ¼½¼ÇÀÌ ÁöÁ¤µÈ ÁÖ¼Ò·Î ·ÎµùµÇµµ·Ï °­Á¦ÇÒ ¼ö ÀÖ´Ù. start´Â ÀÓÀÇÀÇ Ç¥Çö½ÄÀ¸·Î Ç¥ÇöµÉ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â output ¼½¼ÇÀ» 0x40000000¿¡ »ý¼ºÇÑ´Ù:
SECTIONS {
  ...
  output 0x40000000: {
    ...
    }
  ...
}
BLOCK(align)
À§Ä¡ Ä«¿îÅÍ .¸¦ ¼½¼Ç ½ÃÀÛÁ¡º¸´Ù ¾Õ¼­°Ô ÇÏ¿© ±× ¼½¼ÇÀÌ ÁöÁ¤µÈ Á¤·Ä¿¡¼­ ½ÃÀÛÇϵµ·Ï ÇÏ´Â BLOCK() ½ºÆåÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. align´Â Ç¥ÇöÈøÀÌ´Ù.
(NOLOAD)
`(NOLOAD)' Áö½Ã¾î´Â ½Ç½Ã°£¿¡ ¾î¶² ¼½¼ÇÀÌ ·ÎµåµÇÁö ¾Êµµ·Ï ¸¶Å·ÇÑ´Ù. ¸µÄ¿´Â ±× ¼½¼ÇÀ» Á¤»óÀûÀ¸·Î ó¸®ÇÒ °ÍÀÌÁö¸¸ ±×°ÍÀ» ¸¶Å·Çؼ­ ÇÁ·Î±×·¥ ·Î´õ°¡ ±×°ÍÀ» ¸Þ¸ð¸®·Î ·ÎµåÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. ¿¹¸¦ µé¾î¼­ ¾Æ·¡ÀÇ ½ºÅ©¸³Æ® »ùÇÿ¡¼­ ROM ¼½¼ÇÀº ¸Þ¸ð¸® À§Ä¡ `0'¿¡ À§Ä¡ÇÏ°í ÇÁ·Î±×·¥ÀÌ ½ÇÇàÇÒ ¶§´Â ·ÎµåµÇÁö ¾Ê¾Æ¾ß ÇÑ´Ù. ROM ¼½¼ÇÀÇ ³»¿ë¹°µéÀº ¸µÄ¿ Ãâ·Â ÆÄÀÏ¿¡¼­ ÀϹÝÀûÀÎ °æ¿ì¿Í °°ÀÌ ³ªÅ¸³¯ °ÍÀÌ´Ù.
SECTIONS {
  ROM  0  (NOLOAD)  : { ... }
  ...
}
AT ( ldadr )
AT Å°¿öµå µÚ¿¡ µû¶ó ¿À´Â Ç¥Çö½Ä ldadr´Â ±× ¼½¼ÇÀÇ ·Îµå ÁÖ¼Ò¸¦ ÁöÁ¤ÇÑ´Ù. µðÆúÆ®(AT Å°¿öµå¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é)´Â À§Ä¡ ÀçÁöÁ¤ ÁÖ¼Ò¿Í µ¿ÀÏÇÏ´Ù. ÀÌ ±â´ÉÀº ROM À̹ÌÁö¸¦ ºôµåÇϱ⠽±µµ·Ï °í¾ÈµÈ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ÀÌ SECTIONS Á¤ÀÇ´Â µÎ°¡Áö Ãâ·Â ¼½¼ÇµéÀ» »ý¼ºÇÑ´Ù: Çϳª´Â `.text'¶ó°í ºÒ¸®´Â °ÍÀ̸ç ÀÌ°ÍÀº 0x1000¿¡¼­ ½ÃÀÛÇÑ´Ù. ±×¸®°í ´Ù¸¥ Çϳª´Â `.mdata'¶ó°í ºÒ¸®´Â °ÍÀ̸ç ÀÌ°ÍÀÇ À§Ä¡ ÀçÁöÁ¤ ÁÖ¼Ò°¡ 0x2000ÀÏÁö¶óµµ `.text' ¼½¼ÇÀÇ ³¡¿¡ ·ÎµåµÈ´Ù. ½É¹ú _dataÀº code{0x2000} °ªÀ¸·Î Á¤ÀǵȴÙ:
SECTIONS
  {
  .text 0x1000 : { *(.text) _etext = . ; }
  .mdata 0x2000 : 
    AT ( ADDR(.text) + SIZEOF ( .text ) )
    { _data = . ; *(.data); _edata = . ;  }
  .bss 0x3000 :
    { _bstart = . ;  *(.bss) *(COMMON) ; _bend = . ;}
}
ÀÌ·± ½ÄÀ¸·Î »ý¼ºµÈ ROM°ú ÇÔ²² »ç¿ëÇϱâ À§Çؼ­, ÃʱâÈ­ µ¥ÀÌÅ͸¦ ROM À̹ÌÁö·ÎºÎÅÍ ÀÌ°ÍÀÇ ½Ç½Ã°£ ÁÖ¼Ò·Î º¹»çÇϱâ À§Çؼ­, ½Ç-½Ã°£ ÃʱâÈ­ ÄÚµå(C ÇÁ·Î±×·¥µéÀÇ °æ¿ì º¸Åë crt0)´Â ´ÙÀ½°ú °°ÀÌ ¾î¶² °ÍÀ» Æ÷ÇÔÇØ¾ß ÇÑ´Ù:
char *src = _etext;
char *dst = _data;

/* ROM has data at end of text; copy it. */
while (dst < _edata) {
  *dst++ = *src++;
}

/* Zero bss */
for (dst = _bstart; dst< _bend; dst++)
  *dst = 0;
>region
ÀÌ ¼½¼ÇÀ» ÀÌÀü¿¡ Á¤ÀÇµÈ ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î ÇÒ´çÇÑ´Ù. See section ¸Þ¸ð¸® ·¹À̾ƿô(Memory Layout).
:phdr
ÀÌ ¼½¼ÇÀ» ÇÁ·Î±×·¥ Çì´õ¿¡ ÀÇÇؼ­ ±â¼úµÈ ¼¼±×¸ÕÆ®¿¡ ÇÒ´çÇÑ´Ù. See section ELF ÇÁ·Î±×·¥ Çì´õ(ELF Program Headers). ¾î¶² ¼½¼ÇÀÌ Çϳª ÀÌ»óÀÇ ¼¼±×¸ÕÆ®µé¿¡ ÇÒ´çµÇ¸é, ±×µéÀÌ ¸í½ÃÀûÀ¸·Î :phdr º¯°æÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÇÑ, ¸ðµç ÈÄ¼Ó ÇÒ´çµÈ ¼½¼Çµéµµ °°ÀÌ ÀÌ·± ¼¼±×¸ÕÆ®µé·Î ÇÒ´çµÉ °ÍÀÌ´Ù. ¾î¶² ¼½¼ÇÀÌ ¾î¶² ¼¼±×¸ÕÆ®·Î ÇÒ´çµÇ´Â °ÍÀ» ¸·À¸·Á¸é, º¸ÅëÀº µðÆúÆ®·Î ¾î¶² ¼¼±×¸ÕÆ®¿¡ ÇÒ´çµÉ ¶§, :NONE¸¦ »ç¿ëÇÏÀÚ.
=fill
=fill¸¦ ¼½¼Ç Á¤ÀǾȿ¡ Æ÷ÇÔÇÏ´Â °ÍÀº ÃÊÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. fill¸¦ ÁöÁ¤Çϱâ À§Çؼ­ ÀÓÀÇÀÇ Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇöÀç Ãâ·Â ¼½¼Ç¿¡ ÀÖ´Â ÀÓÀÇÀÇ ÇÒ´çµÇÁö ¾ÊÀº ±¸¸Û(hole)µéÀº, Ãâ·Â ÆÄÀÏ¿¡ ±â·ÏµÉ ¶§, ÇÊ¿äÇÏ´Ù¸é ¹Ýº¹Çؼ­, ±× °ªÀÇ LSB(least significant bytes)·Î ä¿öÁú °ÍÀÌ´Ù. ¶ÇÇÑ ¼½¼Ç Á¤ÀÇÀÇ contents¿¡ FILL ¹®ÀåÀ» ½á¼­ °ªÀ» ä¿ìµµ·Ï º¯°æÇÒ ¼ö ÀÖ´Ù.

¿À¹ö·¹ÀÌ(Overlays)

OVERLAY ¸í·ÉÀº ´ÜÀÏ ¸Þ¸ð¸® À̹ÌÁö·Î½á ·ÎµåµÇ¾î¾ß ÇÏÁö¸¸ µ¿ÀÏÇÑ ¸Þ¸ð¸® ÁÖ¼Ò¿¡¼­ ½ÇÇàµÇ¾î¾ß ÇÏ´Â ¼½¼ÇÀ» ±â¼úÇÏ´Â ½¬¿î ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ½ÇÇà½Ã¿¡ ¾î¶² Á¾·ùÀÇ ¿À¹ö·¹ÀÌ °ü¸®ÀÚ´Â ¿À¹ö·¹ÀÌµÈ ¼½¼ÇµéÀ» ¿ä±¸µÈ ½Ç½Ã°£ ¸Þ¸ð¸® ÁÖ¼Ò·Î ±×¸®°í ÀÌ°ÍÀ¸·ÎºÎÅÍ º¹»çÇÒ °ÍÀÌ´Ù. ¾Æ¸¶ ´Ü¼øÇÏ°Ô ¾îµå·¹½Ì ºñÆ®µéÀ» Á¶ÀÛÇÔÀ¸·Î½á ±×·¸°Ô ÇÑ´Ù. ÀÌ·± Á¢±ÙÀº, ¿¹¸¦ µé¾î¼­ ¸Þ¸ð¸®ÀÇ ¾î¶² ¿µ¿ªÀÌ ´Ù¸¥ °Íº¸´Ù ´õ ºü¸¦ ¶§ À¯¿ëÇÒ ¼ö ÀÖ´Ù.

OVERLAY ¸í·ÉÀº SECTIONS ¸í·É¿¡¼­ »ç¿ëµÈ´Ù. ÀÌ°ÍÀº ´ÙÀ½Ã³·³ º¸ÀδÙ:

  OVERLAY start : [ NOCROSSREFS ] AT ( ldaddr )
   {
     secname1 { contents } :phdr =fill
     secname2 { contents } :phdr =fill
     ...
   } >region :phdr =fill

¸ðµç °ÍÀº OVERLAY (Å°¿öµå) ¸¦ Á¦¿ÜÇÏ°í ¿É¼ÇÀÌ°í °¢ ¼½¼ÇÀº ¹Ýµå½Ã À̸§ (À§¿¡¼­ secname1¿Í secname2) À» °¡Á®¾ß ÇÑ´Ù. OVERLAY ±¸Á¶¾ÈÀÇ ¼½¼Ç Á¤ÀǵéÀº ÀϹÝÀûÀÎ SECTIONS ±¸Á¶¾ÈÀÇ ±×°Íµé°ú µ¿ÀÏÇÏ´Ù (see section Ãâ·Â ¼½¼Ç ÁöÁ¤(Specifying Output Sections)). ´Ü ¾î¶² Áּҵ鵵 ±×¸®°í ¾î¶² ¸Þ¸ð¸® ¿µ¿ªµéµµ OVERLAY¾È¿¡ ÀÖ´Â ¼½¼Çµé¿¡ ´ëÇؼ­ Á¤ÀÇµÉ ¼ö ¾ø´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°í.

¼½¼ÇµéÀº ¸ðµÎ µ¿ÀÏÇÑ ½ÃÀÛ ÁÖ¼Ò·Î Á¤ÀǵȴÙ. ¼½¼ÇµéÀÇ ·Îµù ÁÖ¼ÒµéÀº ±×µéÀÌ OVERLAY¿¡ ´ëÇؼ­ »ç¿ëµÈ ·Îµå ÁÖ¼Ò¿¡¼­ ½ÃÀÛÇؼ­ ¸Þ¸ð¸®¿¡ ¿¬¼ÓÀûÀ¸·Î ¹èÄ¡µÇµµ·Ï Á¤·ÄµÈ´Ù(ÀϹÝÀûÀÎ ¼½¼Ç Á¤ÀÇ¿¡¼­Ã³·³ ·Îµù ÁÖ¼Ò´Â ¿É¼ÇÀÌ°í µðÆúÆ®´Â ½ÃÀÛ ÁÖ¼ÒÀÌ´Ù; ½ÃÀÛ ÁÖ¼Òµµ ¶ÇÇÑ ¿É¼ÇÀÌ°í µðÆúÆ®´Â .ÀÌ´Ù).

NOCROSSREFS Å°¿öµå°¡ »ç¿ëµÈ´Ù¸é ±×¸®°í ¼½¼Çµé »çÀÌ¿¡ ´Ù¸¥ ÂüÁ¶µéÀÌ ÀÖ´Ù¸é ¸µÄ¿´Â ¿¡·¯¸¦ º¸°íÇÒ °ÍÀÌ´Ù. ¼½¼Çµé ¸ðµÎ°¡ µ¿ÀÏÇÑ ÁÖ¼Ò¿¡¼­ ½ÇÇàµÇ±â ¶§¹®¿¡ ÇϳªÀÇ ¼½¼ÇÀÌ ´Ù¸¥ °ÍÀ» Á÷Á¢ ÂüÁ¶ÇÏ´Â °ÍÀº ÀϹÝÀûÀ¸·Î Àǹ̰¡ ¾ø´Ù. See section ¿É¼Ç ¸í·É(Option Commands).

OVERLAY ¿¡ ÀÖ´Â °¢ ¼½¼Ç¿¡ ´ëÇؼ­ ¸µÄ¿´Â ÀÚµ¿À¸·Î µÎ °³ÀÇ ½É¹úµéÀ» Á¤ÀÇÇÑ´Ù. ½É¹ú __load_start_secname´Â ±× ¼½¼ÇÀÇ ½ÃÀÛ ·Îµå Áּҷνá Á¤ÀǵȴÙ. ½É¹ú __load_stop_secname´Â ±× ¼½¼ÇÀÇ ¸¶Áö¸· ·Îµå Áּҷνá Á¤ÀǵȴÙ. secname¾È¿¡ ÀÖ´Â C identifierµé ¾È¿¡¼­´Â À¯È¿ÇÏÁö ¾Ê´Â, ÀÓÀÇÀÇ ¹®ÀÚµéÀº ¸ðµÎ Á¦°ÅµÈ´Ù. C (¶Ç´Â ¾î¼Àºí·¯) ÄÚµå´Â ÀÌ·± ½É¹úµéÀ» ÇÊ¿äÇÑ ´ë·Î ¿À¹ö·¹ÀÌµÈ ¼½¼ÇµéÀ» À̵¿ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿À¹ö·¹ÀÌ ¸¶Áö¸·¿¡¼­ .ÀÇ °ªÀº ¿À¹ö·¹ÀÌÀÇ ½ÃÀÛ ÁÖ¼Ò¿¡ °¡Àå Å« ¼½¼ÇÀÇ Å©±â¸¦ ´õÇÑ °ÍÀ¸·Î ¼³Á¤µÈ´Ù.

´ÙÀ½Àº ¿¹Á¦ÀÌ´Ù. ÀÌ°ÍÀº SECTIONS ±¸Á¶¾È¿¡¼­ ³ªÅ¸³¯ °ÍÀÌ´Ù¶ó´Â °ÍÀ» ±â¾ïÇÏÀÚ.

  OVERLAY 0x1000 : AT (0x4000)
   {
     .text0 { o1/*.o(.text) }
     .text1 { o2/*.o(.text) }
   }

ÀÌ°ÍÀº .text0¿Í .text1 µÑ´Ù 0x1000 ÁÖ¼Ò¿¡¼­ ½ÃÀÛÇϵµ·Ï Á¤ÀÇÇÒ °ÍÀÌ´Ù. .text0´Â ÁÖ¼Ò 0x4000¿¡ ·ÎµåµÉ °ÍÀÌ°í .text1´Â .text0 ¹Ù·Î µÚ·Î ·ÎµåµÉ °ÍÀÌ´Ù. ´ÙÀ½ ±âÈ£µéÀÌ Á¤ÀÇµÉ °ÍÀÌ´Ù: __load_start_text0, __load_stop_text0, __load_start_text1, __load_stop_text1.

¿À¹ö·¹ÀÌ .text1¸¦ ¿À¹ö·¹ÀÌ ¿µ¿ª¾ÈÀ¸·Î º¹»çÇÏ´Â C ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ º¸ÀÏ ¼ö ÀÖ´Ù.

  extern char __load_start_text1, __load_stop_text1;
  memcpy ((char *) 0x1000, &__load_start_text1,
          &__load_stop_text1 - &__load_start_text1);

OVERLAY ¸í·ÉÀº ´ÜÁö ¹®¹ýÀûÀÎ ¼³ÅÁ(sugar)ÀÌ´Ù. ¿Ö³Ä¸é ÀÌ°ÍÀÌ ÇÏ´Â ¸ðµç ÀϵéÀÌ Á» ´õ ±âº»ÀûÀÎ ¸í·ÉµéÀ» »ç¿ë¤¾¼­ ÀÌ·ç¾îÁú ¼ö Àֱ⠶§¹®ÀÌ´Ù. À§ÀÇ ¿¹´Â ´ÙÀ½°ú °°Àº °ÍÀ¸·Î µ¿ÀÏÇÏ°Ô ÀÛ¼ºµÉ ¼ö ÀÖ´Ù.

  .text0 0x1000 : AT (0x4000) { o1/*.o(.text) }
  __load_start_text0 = LOADADDR (.text0);
  __load_stop_text0 = LOADADDR (.text0) + SIZEOF (.text0);
  .text1 0x1000 : AT (0x4000 + SIZEOF (.text0)) { o2/*.o(.text) }
  __load_start_text1 = LOADADDR (.text1);
  __load_stop_text1 = LOADADDR (.text1) + SIZEOF (.text1);
  . = 0x1000 + MAX (SIZEOF (.text0), SIZEOF (.text1));

ELF ÇÁ·Î±×·¥ Çì´õ(ELF Program Headers)

ELF ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äÀº ÇÁ·Î±×·¥ Çì´õ(program headers) ¸¦ »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº ½Ã½ºÅÛ ·Î´õ¿¡ ÀÇÇؼ­ ÀÐÈ÷°í, ÇÁ·Î±×·¥ÀÌ ¸Þ¸ð¸®·Î ÀûÀçµÇ´Â ¹æ¹ýÀ» ±â¼úÇÑ´Ù. ÇÁ·Î±×·¥ Çì´õ´Â ÇÁ·Î±×·¥À» ELF ½Ã½ºÅÛ¿¡¼­ ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï Á¤È®ÇÏ°Ô ¼³Á¤µÇ¾î¾ß ÇÑ´Ù. ¸µÄ¿´Â Ÿ´çÇÑ ÇÁ·Î±×·¥ Çì´õµéÀ» µðÆúÆ®·Î »ý¼ºÇÒ °ÍÀÌ´Ù. ±×·¯³ª ¾î¶² °æ¿ì¿¡´Â ±× ÇÁ·Î±×·¥ Çì´õµéÀ» Á» ´õ ÀÚ¼¼ÇÏ°Ô ¸í½ÃÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù; PHDRS ¸í·ÉÀº ÀÌ·± ¸ñÀûÀ¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù. PHDRS ¸í·ÉÀÌ »ç¿ëµÇ¸é ¸µÄ¿´Â ¾î¶² ÇÁ·Î±×·¥ Çì´õµéµµ ½º½º·Î »ý¼ºÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.

PHDRS ¸í·ÉÀº ´ÜÁö ELF Ãâ·Â ÆÄÀÏÀ» »ý¼ºÇÒ ¶§¸¸ Àǹ̰¡ ÀÖ´Ù. ÀÌ°ÍÀº ´Ù¸¥ °æ¿ì¿¡´Â ¹«½ÃµÈ´Ù. ÀÌ ¸Å´º¾óÀº ½Ã½ºÅÛ ·Î´õ°¡ ÇÁ·Î±×·¥ Çì´õµéÀ» Çؼ®ÇÏ´Â ÀÚ¼¼ÇÑ »çÇ×µéÀ» ±â¼úÇÑ´Ù; Á» ´õ ÀÚ¼¼ÇÑ Á¤º¸µéÀ» º¸·Á¸é ELF ABI¸¦ º¸ÀÚ. ELF ÆÄÀÏÀÇ ÇÁ·Î±×·¥ Çì´õµéÀº objdump ¸í·ÉÀÇ `-p' ¿É¼ÇÀ» »ç¿ëÇؼ­ µð½ºÇ÷¹ÀÌµÉ ¼ö ÀÖ´Ù.

´ÙÀ½Àº PHDRS ¸í·ÉÀÇ ¹®¹ýÀÌ´Ù. PHDRS, FILEHDR, AT, ±×¸®°í FLAGS ´Ü¾îµéÀº Å°¿öµåµéÀÌ´Ù.

PHDRS
{
  name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ]
        [ FLAGS ( flags ) ] ;
}

name´Â ¸µÄ¿ ½ºÅ©¸³Æ®ÀÇ SECTIONS ¸í·É¿¡¼­ ÂüÁ¶¸¦ À§Çؼ­¸¸ »ç¿ëµÈ´Ù. ÀÌ°ÍÀº Ãâ·Â ÆÄÀÏ¿¡ µé¾î°¡Áö ¾Ê´Â´Ù.

¾î¶² ÇÁ·Î±×·¥ Çì´õ ŸÀÔµéÀº ÆÄÀϷκÎÅÍ ½Ã½ºÅÛ ·Î´õ¿¡ ÀÇÇؼ­ ·ÎµåµÇ´Â ¸Þ¸ð¸® ¼¼±×¸ÕÆ®µéÀ» ±â¼úÇÑ´Ù. ¸µÄ¿ ½ºÅ©¸³Æ®¿¡¼­ ÀÌ·± ¼¼±×¸ÕÆ®µéÀÇ ³»¿ë¹°Àº ÇÒ´çµÈ Ãâ·Â ¼½¼ÇµéÀÌ ±× ¼¼±×¸ÕÆ® ¾È¿¡ µé¾î°¡µµ·Ï(¿ªÀÚÁÖ: ¸®´ÙÀÌ·ºÆ®) ÇÔÀ¸·Î½á ÁöÁ¤µÈ´Ù. ÀÌ·¸°Ô Çϱâ À§Çؼ­ SECTIONS ¸í·É¿¡¼­ Ãâ·Â ¼½¼ÇÀ» ±â¼úÇÏ´Â ¸í·ÉÀº `:name'¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ¿©±â¼­ `:name'´Â PHDRS ¸í·É¿¡ ³ªÅ¸³­ °Í°ú °°ÀÌ ÇÁ·Î±×·¥ Çì´õÀÇ À̸§ÀÌ´Ù. See section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes).

¾î¶² ¼½¼ÇµéÀÌ Çϳª ÀÌ»óÀÇ ¼¼±×¸ÕÆ® ¾È¿¡¼­ ³ªÅ¸³ª´Â °ÍÀº ÀϹÝÀûÀÌ´Ù. ÀÌ°ÍÀº `:name'¸¦ ¹Ýº¹ÇÔÀ¸·Î½á ÁöÁ¤µÈ´Ù. ¼½¼ÇÀÌ ³ªÅ¸³¯ ÇÁ·Î±×·¥ Çì´õ °¢°¢¿¡ ´ëÇؼ­ Çѹø¾¿ ÀÌ°ÍÀ» »ç¿ëÇÏ´Â ½ÄÀ¸·Î ¹Ýº¹ÇÑ´Ù.

¾î¶² ¼½¼ÇÀÌ `:name'¸¦ »ç¿ëÇÏ¿© Çϳª ÀÌ»óÀÇ ¼¼±×¸ÕÆ®µé¾È¿¡ ³õÀδٸé, `:name'¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº ¸ðµç ÈÄ¼Ó ÇÒ´çµÈ ¼½¼ÇµéÀº µ¿ÀÏÇÑ ¼¼±×¸ÕÆ®µé ¾È¿¡ ³õÀδÙ. ÀÌ°ÍÀº ÆíÀǸ¦ À§ÇÑ °ÍÀÌ´Ù. ¿Ö³Ä¸é ÀϹÝÀûÀ¸·Î ¿¬¼ÓµÈ ¼½¼ÇµéÀÇ Àüü ÁýÇÕÀº ´ÜÀÏ ¼¼±×¸ÕÆ® ¾È¿¡ ³õÀÏ °ÍÀ̱⠶§¹®ÀÌ´Ù. µðÆúÆ®·Î Çϳª¿¡ ÇÒ´çµÇ´Â °ÍÀÌ °ü·ÊÀÌÁö¸¸, ¾î¶² ¼½¼ÇÀÌ ÇϳªÀÇ ¼¼±×¸ÕÆ®¿¡ ÇÒ´çµÇ´Â °ÍÀ» ¹æÁöÇÏ·Á¸é, :NONE¸¦ »ç¿ëÇÏÀÚ.

ÇÁ·Î±×·¥ Çì´õ ŸÀÔ µÚ¿¡ ³ªÅ¸³¯ ¼ö ÀÖ´Â FILEHDR¿Í PHDRS Å°¿öµåµéÀº ¶ÇÇÑ ¸Þ¸ð¸®ÀÇ ¼¼±×¸ÕÆ® ³»¿ëµéÀ» °¡¸®Å²´Ù. FILEHDR Å°¿öµå´Â ±× ¼¼±×¸ÕÆ®°¡ ELF ÆÄÀÏ Çì´õ¸¦ Æ÷ÇÔÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. PHDRS Å°¿öµå´Â ±× ¼¼±×¸ÕÆ®°¡ ELF ÇÁ·Î±×·¥ Çì´õ ÀڽŵéÀ» Æ÷ÇÔÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.

type´Â ´ÙÀ½°ú °°Àº °Íµé ÁßÀÇ ÇϳªÀÏ ¼ö ÀÖ´Ù. ¼ýÀÚµéÀº Å°¿öµåÀÇ °ªÀ» ³ªÅ¸³½´Ù.

PT_NULL (0)
»ç¿ëµÇÁö ¾Ê´Â ÇÁ·Î±×·¥ Çì´õ¸¦ °¡¸®Å²´Ù.
PT_LOAD (1)
ÀÌ ÇÁ·Î±×·¥ Çì´õ°¡ ÆÄÀϷκÎÅÍ ·ÎµåµÇ´Â ¼¼±×¸ÕÆ®¸¦ ±â¼úÇÑ´Ù´Â °ÍÀ» °¡¸®Å²´Ù.
PT_DYNAMIC (2)
µ¿Àû ¸µÅ© Á¤º¸¸¦ ãÀ» ¼ö ÀÖ´Â ¼¼±×¸ÕÆ®¸¦ °¡¸®Å²´Ù.
PT_INTERP (3)
ÇÁ·Î±×·¥ Çؼ®±â(interpreter)ÀÇ À̸§À» ¸¦ ãÀ» ¼ö ÀÖ´Â ¼¼±×¸ÕÆ®¸¦ °¡¸®Å²´Ù.
PT_NOTE (4)
Âü°í(note) Á¤º¸¸¦ °®°í ÀÖ´Â ¼¼±×¸ÕÆ®¸¦ °¡¸®Å²´Ù.
PT_SHLIB (5)
¿¹¾àµÈ Çì´õ ŸÀÔ. Á¤ÀÇµÈ °ÍÀÌÁö¸¸ ELF ABI¿¡ ÀÇÇؼ­ ÁöÁ¤µÇÁö ¾ÊÀº °Í.
PT_PHDR (6)
ÇÁ·Î±×·¥ Çì´õµéÀ» ãÀ» ¼ö ÀÖ´Â ¼¼±×¸ÕÆ®¸¦ °¡¸®Å²´Ù.
expression
ÇÁ·Î±×·¥ Çì´õÀÇ ¼ýÀÚ Å¸ÀÔÀ» Á¦°øÇϴ ǥÇö½Ä. ÀÌ°ÍÀº À§¿¡¼­ Á¤ÀǵÇÁö ¾ÊÀº ŸÀԵ鿡 ´ëÇؼ­ »ç¿ëµÉ ¼ö ÀÖ´Ù.

¾î¶² ¼¼±×¸ÕÆ®°¡ ¸Þ¸ð¸®ÀÇ Æ¯Á¤ ÁÖ¼Ò¿¡¼­ ·ÎµåµÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ÁöÁ¤ÇÏ´Â °ÍÀº °¡´ÉÇÏ´Ù. ÀÌ°ÍÀº AT Ç¥Çö½ÄÀ» »ç¿ëÇؼ­ °¡´ÉÇÏ´Ù. ÀÌ°ÍÀº SECTIONS ¸í·É¾È¿¡¼­ »ç¿ëµÈ AT ¸í·É¿¡ µ¿ÀÏÇÏ´Ù (see section ¿É¼ÇÀÎ ¼½¼Ç ¼Ó¼º(Optional Section Attributes)). ÇÁ·Î±×·¥ Çì´õ¿¡ AT¸¦ »ç¿ëÇÏ´Â °ÍÀº SECTIONS ¸í·É¿¡ ÀÖ´Â ÀÓÀÇÀÇ Á¤º¸¸¦ ¿À¹ö¶óÀ̵åÇÑ´Ù.

ÀϹÝÀûÀ¸·Î ¼¼±×¸ÕÆ® Ç÷¡±×µéÀº ¼½¼Çµé¿¡ ±âÃÊÇؼ­ ¼³Á¤µÈ´Ù. FLAGS Å°¿öµå´Â ¸í½ÃÀûÀ¸·Î ¼¼±×¸ÕÆ® Ç÷¡±×µéÀ» ÁöÁ¤Çϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. flagsÀÇ °ªÀº Á¤¼öÀ̾î¾ß ÇÑ´Ù. ÀÌ°ÍÀº ÇÁ·Î±×·¥ Çì´õÀÇ p_flags¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.

´ÙÀ½Àº PHDRS »ç¿ëÀÇ ¿¹ÀÌ´Ù. ÀÌ°ÍÀº ¿ø(native) ELF ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÇ´Â ÇÁ·Î±×·¥ Çì´õµéÀÇ ÀüÇüÀûÀÎ ¸ð½ÀÀ» º¸¿©ÁØ´Ù.

PHDRS
{
  headers PT_PHDR PHDRS ;
  interp PT_INTERP ;
  text PT_LOAD FILEHDR PHDRS ;
  data PT_LOAD ;
  dynamic PT_DYNAMIC ;
}

SECTIONS
{
  . = SIZEOF_HEADERS;
  .interp : { *(.interp) } :text :interp
  .text : { *(.text) } :text
  .rodata : { *(.rodata) } /* defaults to :text */
  ...
  . = . + 0x1000; /* move to a new page in memory */
  .data : { *(.data) } :data
  .dynamic : { *(.dynamic) } :data :dynamic
  ...
}

¿£Æ®¸® Æ÷ÀÎÆ®(The Entry Point)

¸µÄ¿ ¸í·É ¾ð¾î´Â °á°ú ÆÄÀÏ¿¡¼­ ù¹ø°·Î ½ÇÇàµÉ ¸í·É(entry point)À» Á¤ÀÇÇϱâ À§Çؼ­ Ưº°È÷ °í¾ÈµÈ ¸í·ÉÀ» Æ÷ÇÔÇÑ´Ù. ÀÌ°ÍÀÇ ¸Å°³º¯¼ö´Â ½É¹ú À̸§ÀÌ´Ù:

ENTRY(symbol)

½É¹ú ÇÒ´çó·³, ENTRY ¸í·ÉÀº ¸í·É ÆÄÀÏ ¾È¿¡¼­ µ¶¸³ ¸í·ÉÀ¸·Î½á ¶Ç´Â SECTIONS ¸í·É¾È¿¡ ÀÖ´Â ¼½¼Ç Á¤Àǵé Áß¿¡ ÀÖÀ» ¼ö ÀÖ´Ù---¾î¶² °ÍÀÌµç ·¹À̾ƿô¿¡ ´ëÇؼ­ °¡Àå ÀǹÌÀÖÀ¸¸é µÈ´Ù.

ENTRY ´Â ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ ¼±ÅÃÇÏ´Â ¿©·¯°¡Áö ¹æ¹ýµé Áß¿¡¼­ À¯ÀÏÇÑ °ÍÀÌ´Ù. ¿©·¯ºÐÀº ÀÌ°ÍÀ» ´ÙÀ½ ¹æ¹ýµé ÁßÀÇ Çϳª·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù(¿ì¼±¼øÀ§ ³»¸²Â÷¼øÀ¸·Î º¸¿©Áø: ÀÌ ¸®½ºÆ®¿¡¼­ Á» ´õ ³ôÀº ¹æ¹ýµéÀº ´õ ¾Æ·¡¿¡ ÀÖ´Â ¹æ¹ýµéÀ» ¿À¹ö¶óÀ̵åÇÑ´Ù).

¿¹¸¦ µé¾î¼­ ¿©·¯ºÐÀº ÀÌ·± ±ÔÄ¢µéÀ» »ç¿ëÇؼ­ ÇÒ´ç ¹®Àå ¾È¿¡¼­ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Ù: ÀÔ·Â ÆÄÀÏ ¾È¿¡ start ½É¹úÀÌ Á¤ÀǵÇÁö ¾Ê¾Ò´Ù¸é ÀÌ°Í¿¡ ÀûÀåÇÑ °ªÀ» ÇÒ´çÇÔÀ¸·Î½á Á¤ÀÇÇÒ ¼ö ÀÖ´Ù---

start = 0x2020;

ÀÌ ¿¹Á¦´Â Àý´ë ÁÖ¼Ò¸¦ º¸¿©ÁÖÁö¸¸ ÀÓÀÇÀÇ Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ¿©·¯ºÐÀÇ ÀÔ·Â ¿ÀºêÁ§Æ® ÆÄÀϵéÀÌ ¿£Æ®¸® Æ÷ÀÎÆ®¿¡ ´ëÇؼ­ ¾î¶² ´Ù¸¥ ½É¹ú-À̸§ °ü·Ê¸¦ »ç¿ëÇÑ´Ù¸é ¿©·¯ºÐÀº start¿¡ ´ëÇÑ ½ÃÀÛ ÁÖ¼Ò¸¦ ´ã°í ÀÖ´Â ½É¹úÀÌ¸é ¹«¾ùÀ̵ç ÀÌ°ÍÀÇ °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ´Ù:

start = other_symbol ;

¹öÀü ½ºÅ©¸³Æ®(Version Script)

¸µÄ¿ ¸í·É ½ºÅ©¸³Æ®´Â Ưº°È÷ ¹öÀü ½ºÅ©¸³Æ®¸¦ ÁöÁ¤Çϱâ À§ÇÑ ¸í·ÉÀ» Æ÷ÇÔÇÏ¸ç °øÀ¯ ¶óÀ̺귯¸®µéÀ» Áö¿øÇÏ´Â ELF Ç÷§Æûµé¿¡¼­¸¸ Àǹ̰¡ ÀÖ´Ù. ¹öÀü ½ºÅ©¸³Æ®´Â ¸µÅ©ÇÏ´Â ½Ã°£¿¡ ¸µÄ¿¿¡ ´ëÇÑ ´Ù¸¥ ÀÔ·Â ÆÄÀÏó·³, ¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â ¸µÄ¿ ½ºÅ©¸³Æ®¾È¿¡ Á÷Á¢ ¸¸µé¾î ³Ö¾îÁú ¼ö ÀÖ´Ù. ¸í·É ½ºÅ©¸³Æ® ¹®¹ýÀº ´ÙÀ½°ú °°´Ù:

VERSION { version script contents }

¹öÀü ½ºÅ©¸³Æ®´Â `--version-script' ¸µÄ¿ ¸í·ÉÇà ¿É¼ÇÀ» »ç¿ëÇؼ­ ¸µÄ¿¿¡°Ô ÁöÁ¤µÉ ¼ö ÀÕµû. ¹öÀü ½ºÅ©¸³Æ®µéÀº °øÀ¯ ¶óÀ̺귯¸®µéÀ» »ý¼ºÇÒ ¶§¸¸ Àǹ̰¡ ÀÖ´Ù.

¹öÀü ½ºÅ©¸³Æ®ÀÇ Æ÷¸äÀº ¼Ö¶ó¸®½º 2.5¿¡¼­ SunÀÇ ¸µÄ¿¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â ±×°Í°ú µ¿ÀÏÇÏ´Ù. ¹öÀüÀ» ¸Å±â´Â °Í(versioning)Àº À̸§À» °¡Áø ¹öÀü ³ëµåµé Æ®¸®¿Í ¹öÀü ½ºÅ©¸³Æ®¾È¿¡¼­ ÁöÁ¤ÇÑ »óÈ£ ÀÇÁ¸¼ºÀ» Á¤ÀÇÇÔÀ¸·Î½á ¼öÇàµÈ´Ù. ¹öÀü ½ºÅ©¸³Æ®´Â ¾î¶² ½É¹úµéÀÌ ¾î¶² ¹öÀü ³ëµå¿¡ ÀÇÁ¸ÇÏ´ÂÁö ÁöÁ¤ÇÒ ¼ö ÀÖ°í ÁöÁ¤µÈ ½É¹ú ÁýÇÕÀ» ·ÎÄà ¹üÀ§·Î Ãà¼ÒÇؼ­ ±×µéÀÌ °øÀ¯ ¶óÀ̺귯¸® ¿ÜºÎ¿¡¼­ ±Û·Î¹úÇÏ°Ô º¸ÀÌÁö ¾Êµµ·Ï ÇÒ ¼ö ÀÖ´Ù.

¹öÀü ½ºÅ©¸³Æ® ¾ð¾îÀÇ µ¥¸ð¸¦ º¸¿©ÁÖ´Â °¡Àå ½¬¿î ¹æ¹ýÀº ´ÙÀ½°ú °°Àº ¸î°¡Áö ¿¹Á¦µéÀ» º¸´Â °ÍÀÌ´Ù.

VERS_1.1 {
	 global:
		 foo1;
	 local:
		 old*; 
		 original*; 
		 new*; 
};

VERS_1.2 {
		 foo2;
} VERS_1.1;

VERS_2.0 {
		 bar1; bar2;
} VERS_1.2;

ÀÌ ¿¹Á¦¿¡¼­ ¼¼ ¹öÀü ³ëµåµéÀÌ Á¤ÀǵǾî ÀÖ´Ù. `VERS_1.1'Àº Á¤ÀÇµÈ Ã¹¹ø° ¹öÀü ³ëµåÀÌ°í ´Ù¸¥ Á¾¼Ó¹°µéÀ» °¡ÁöÁö ¾Ê´Â´Ù. `foo1'´Â ¹öÀü ³ëµå¿¡ Á¾¼ÓÀûÀÌ°í ¿©·¯ ¿ÀºêÁ§Æ® ÆÄÀϵé¾È¿¡ º¸ÀÌ´Â ¸¹Àº ½É¹úµéÀº ±× ¹üÀ§°¡ ·ÎÄ÷ΠÁÙ¾îµé¾î¼­ ±×µéÀº °øÀ¯ ¸Þ¸ð¸® ¹Ù±ù¿¡¼­ º¸ÀÌÁö ¾Ê´Â´Ù.

´ÙÀ½À¸·Î `VERS_1.2'°¡ Á¤ÀǵǾî ÀÖ´Ù. ÀÌ°ÍÀº `VERS_1.1'¿¡ Á¾¼ÓÀûÀÌ´Ù. `foo2' ½É¹úÀº ÀÌ ¹öÀü ³ëµå¿¡ Á¾¼ÓÀûÀÌ´Ù.

¸¶Áö¸·À¸·Î `VERS_2.0' ³ëµå°¡ Á¤ÀǵȴÙ. ÀÌ°ÍÀº `VERS_1.2'¿¡ Á¾¼ÓÀûÀÌ´Ù. `bar1'¿Í `bar2' ½É¹úµéÀº ÀÌ ¹öÀü ³ëµå¿¡ Á¾¼ÓÀûÀÌ´Ù.

¾î¶² ¹öÀü ³ëµå¿¡ Á¾¼ÓÀûÀÌÁö ¾Ê´Â, ¶óÀ̺귯¸®³»¿¡¼­ Á¤ÀÇµÈ ½É¹úµéÀº ±× ¶óÀ̺귯¸®ÀÇ ÁöÁ¤µÇÁö ¾ÊÀº º£À̽º ¹öÀü¿¡ È¿°úÀûÀ¸·Î Á¾¼ÓÀûÀÌ´Ù. ¸ðµç ±×·¸Áö ¾ÊÀº ÁöÁ¤µÇÁö ¾ÊÀº ½É¹úµéÀ» ¹öÀü ½ºÅ©¸³Æ® ¾îµò°¡¿¡ `global: *'¸¦ »ç¿ëÇÑ ÁÖ¾îÁø ¹öÀü ³ëµå¿¡ Á¾¼ÓÀûÀÌ°Ô ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.

¾îÈÖÀûÀ¸·Î ¹öÀü ³ëµåµéÀÇ À̸§Àº ±×µéÀÌ ±×°ÍÀ» Àд »ç¶÷¿¡°Ô Á¦½ÃÇÒ ÀÇ¹Ì¿Í ´Ù¸¥ ±¸Ã¼ÀûÀÎ Àǹ̸¦ °¡ÁöÁö ¾Ê´Â´Ù. `2.0' ¹öÀüÀº `1.1'°ú `1.2' »çÀÌ¿¡¼­ ³ªÅ¸³¯ ¼öµµ ÀÖ´Ù. ±×·¯³ª ÀÌ°ÍÀº ¹öÀü ½ºÅ©¸³Æ®¸¦ È¥¶õ½º·´°Ô ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ µÉ °ÍÀÌ´Ù.

¾îÇø®ÄÉÀ̼ǰú ¹öÀüÀÌ ºÙÀº ½É¹ú(versioned symbol)À» °¡Áö´Â °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸µÅ©ÇÒ ¶§ ¾îÇø®ÄÉÀÌ¼Ç ÀÚ½ÅÀº ÀÌ°ÍÀÌ ÇÊ¿ä·Î ÇÏ´Â °¢ ½É¹úÀÇ ¹öÀüÀÌ ¹«¾ùÀÎÁö¸¦ ¾Ë°í ÀÖÀ¸¸ç, ¸µÅ©ÇÏ´Â °¢ °øÀ¯ ¶óÀ̺귯¸®·ÎºÎÅÍ ÇÊ¿äÇÑ ¹öÀü ³ëµå°¡ ¹«¾ùÀΰ¡µµ ¾Ë°í ÀÖ´Ù. ±×·¡¼­ ½ÇÇà½Ã µ¿Àû ·Î´õ´Â ¸µÅ©ÇÑ ¶óÀ̺귯¸®µéÀÌ ½ÇÁ¦·Î ¾îÇø®ÄÉÀ̼ÇÀÌ ¸ðµç µ¿Àû ½É¹úµéÀ» Çص¶(resolve)ÇØ¾ß ÇÏ´Â ¸ðµç ¹öÀü ³ëµåµéÀ» Á¦°øÇÏ´ÂÁö »¡¸® °Ë»çÇÒ ¼ö ÀÖ´Ù. ÀÌ·±½ÄÀ¸·Î µ¿Àû ·Îµå´Â ÀÌ°ÍÀÌ ÇÊ¿ä·ÎÇÏ´Â ¸ðµç ¿ÜºÎ ½É¹úµéÀÌ °¢ ½É¹ú ÂüÁ¶¿¡ ´ëÇؼ­ Á¶»ç¸¦ ÇÒ ÇÊ¿ä¾øÀÌ Çص¶°¡´É(resolvable)ÀÏ °ÍÀ̶ó°í »ý°¢ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.

½É¹úÀÇ ¹öÀüÀ» ¸Å±â´Â °Í(symbol versioning)Àº SunOS°¡ ÇÏ´Â ¸¶ÀÌ³Ê ¹öÀü °Ë»ç(minor version checking)¸¦ ¼öÇàÇÏ´Â, Á» ´õ º¹ÀâÇÑ ¹æ¹ýÀÌ´Ù. ¿©±â¿¡ ±â¼úµÈ ±âº»ÀûÀÎ ¹®Á¦´Â, ¶§ ÀüÇüÀûÀ¸·Î ¿ÜºÎ ÇÔ¼öµé¿¡ ´ëÇÑ ÂüÁ¶°¡ ÇÊ¿äÇÑ ¹Ù¿¡ µû¸£´Â ±âÃÊ(as-needed basis)¿¡ ±â¹ÝÇÏ°í, ¾îÇø®ÄÉÀ̼ÇÀÌ ½ÃÀÛÇÒ ¶§ ¸ðµÎ°¡ Á¾¼ÓÀûÀÌÁö´Â ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. °øÀ¯ ¶óÀ̺귯¸®°¡ ¿À·¡µÈ °ÍÀ̶ó¸é ¿ä±¸µÈ ÀÎÅÍÆäÀ̽º°¡ ¾øÀ» ¼ö ÀÖ´Ù; ¾îÇø®ÄÉÀ̼ÇÀÌ ±× ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ·Á°í ÇÒ ¶§, °©Àڱ⠿¹ÃøÇÏÁö ¸øÇÑ ½ÇÆи¦ °ÞÀ» °ÍÀÌ´Ù. ½É¹ú¿¡ ¹öÀüÀ» ¸Å±â´Â °ÍÀ¸·Î »ç¿ëÀÚ´Â, »ç¿ëµÈ ¶óÀ̺귯¸®µéÀÌ ³Ê¹« ¿À·¡µÈ °ÍÀ̶ó¸é ±×µéÀÇ ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ ¶§ °æ°í¸¦ ¾òÀ» °ÍÀÌ´Ù.

SunÀÇ ¹öÀü ¸Å±â´Â Á¢±Ù¹ý¿¡ ´ëÇÑ ¸î°¡Áö GNU È®ÀåÆǵéÀÌ ÀÖ´Ù. À̵éÁß Ã¹¹ø°´Â ½É¹úÀ» ¹öÀü ½ºÅ©¸³Æ® ´ë½Å ½É¹úÀÌ Á¤ÀÇµÈ ¼Ò½º ÆÄÀÏ¿¡¼­ ¹öÀü ³ëµå¿¡ ¹ÙÀεùÇÏ´Â ´É·ÂÀÌ´Ù. ÀÌ°ÍÀº ÁÖ·Î ¶óÀ̺귯¸® °ü¸®ÀÚÀÇ ÁüÀ» ´ú¾îÁÖ±â À§Çؼ­ ¸¸µé¾îÁ³´Ù. ÀÌ°ÍÀº ´ÙÀ½°ú °°Àº °ÍÀ» C ¼Ò½º ÆÄÀϾȿ¡ ³Ö¾î¼­ ÀÌ·ç¾îÁú ¼ö ÀÖ´Ù:

__asm__(".symver original_foo,foo@VERS_1.1");

ÀÌ°ÍÀº ÇÔ¼ö `original_foo'¸¦ ¹öÀü ³ëµå `VERS_1.1'¿¡ ¹ÙÀεùµÈ `foo'¿¡ ´ëÇÑ ¾Ë¸®¾î½º·Î À̸§À» ¹Ù²Ù¾ú´Ù. `local:' Áö½Ã¾î´Â ½É¹ú `original_foo'ÀÌ ÀͽºÆ÷Æ®µÇ´Â °ÍÀ» ¸·´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.

µÎ¹ø° GNU È®ÀåÀº µ¿ÀÏÇÑ ÇÔ¼ö¿¡ ´ëÇÑ ¿©·¯ ¹öÀüµéÀÌ ÁÖ¾îÁø °øÀ¯ ¶óÀ̺귯¸®¾È¿¡ ³ªÅ¸³ªµµ·Ï Çã¶ôÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÌ·±½ÄÀ¸·Î ¾î¶² ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ºñȣȯ º¯È­´Â °øÀ¯ ¶óÀ̺귯¸®ÀÇ ÁÖ ¹öÀü ¹øÈ£¸¦ Áõ°¡½ÃÅ°Áö ¾Ê°í¼­ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ¿©ÀüÈ÷ ¿¹Àü ÀÎÅÍÆäÀ̽º¿¡ ¸µÅ©µÈ ¾îÇø®ÄÉÀ̼ǵéÀÌ °è¼Ó ÀÛµ¿ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

ÀÌ°ÍÀº ¾î¼Àºí·¯ ¾È¿¡ ´Ù¼öÀÇ `.symver' Áö½Ã¾îµéÀ» »ç¿ëÇÔÀ¸·Î½á¸¸ ¼ºÃëµÉ ¼ö ÀÖ´Ù. ÀÌ°ÍÀÇ ¿¹Á¦´Â ´ÙÀ½°ú °°´Ù:

__asm__(".symver original_foo,foo@");
__asm__(".symver old_foo,foo@VERS_1.1");
__asm__(".symver old_foo1,foo@VERS_1.2");
__asm__(".symver new_foo,foo@@VERS_2.0");

ÀÌ ¿¹Á¦¿¡¼­ `foo@'´Â ÁöÁ¤µÇÁö ¾ÊÀº ½É¹úÀÇ º£À̽º ¹öÀü¿¡ ¹­ÀÎ `foo' ½É¹úÀ» ³ªÅ¸³½´Ù. ÀÌ ¿¹Á¦¸¦ ´ã°í ÀÕ´Â ¼Ò½º ÆÄÀÏÀº 4°³ÀÇ C ÇÔ¼öµéÀ» Á¤ÀÇÇÒ °ÍÀÌ´Ù: `original_foo', `old_foo', `old_foo1', ±×¸®°í `new_foo'.

ÁÖ¾îÁø ½É¹úÀÇ ¿©·¯ Á¤ÀǵéÀ» °¡Áö°í ÀÖ´Ù¸é ÀÌ ½É¹ú¿¡ ´ëÇÑ ¿ÜºÎ ÂüÁ¶µéÀÌ ¹ÙÀεùµÉ µðÆúÆ® ¹öÀüÀ» Á¦½ÃÇÏ´Â ¸î°¡Áö ¹æ¹ýµéÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ°ÍÀº `.symver' Áö½Ã¾îÀÇ `foo@@VERS_2.0' ŸÀÔÀ¸·Î ¼ºÃëµÉ ¼ö ÀÖ´Ù. ¾î¶² ½É¹úÀÇ ÇÑ ¹öÀü¸¸ÀÌ ÀÌ·± ½ÄÀ¸·Î 'µðÆúÆ®'·Î ¼±¾ðµÉ ¼ö ÀÖ´Ù - ±×·¸Áö ¾ÊÀ¸¸é µ¿ÀÏÇÑ ½É¹úÀÇ ¿©·¯ Á¤ÀǵéÀ» È¿°úÀûÀ¸·Î °¡Áö°Ô µÉ °ÍÀÌ´Ù.

°øÀ¯ ¶óÀ̺귯¸®¾È¿¡ ½É¹úÀÇ Æ¯Á¤ ¹öÀü¿¡´Ù ÂüÁ¶¸¦ ¹ÙÀεùÇÏ°íÀÚ ÇÑ´Ù¸é ¿©·¯ºÐÀº Æí¸®ÇÑ ¾Ë¸®¾î½ºµéÀ» »ç¿ëÇÒ ¼ö Àְųª (i.e. `old_foo'), ¶Ç´Â `.symver' Áö½Ã¾î¸¦ »ç¿ëÇؼ­ ¸í½ÃÀûÀ¸·Î ¹®Á¦ÀÇ ÇÔ¼ö ¿ÜºÎ ¹öÀü¿¡ ¹ÙÀεùÇÒ ¼ö ÀÖ´Ù.

¿É¼Ç ¸í·É(Option Commands)

¸í·É ¾ð¾î´Â Ưº°ÇÑ ¸ñÀûµé¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ¿©·¯ ¸í·ÉµéÀ» Æ÷ÇÔÇÑ´Ù. ±×µéÀº ¸í·ÉÇà ¿É¼Çµé°ú ¸ñÀû»ó ºñ½ÁÇÏ´Ù.

CONSTRUCTORS
a.out ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äÀ» »ç¿ëÇÏ¿© ¸µÅ©ÇÒ ¶§ ¸µÄ¿´Â C++ ±Û·Î¹ú »ý¼ºÀÚ¿Í Æı«ÀÚ(destructor)¸¦ Áö¿øÇϱâ À§Çؼ­ ºñÀÏ»óÀûÀÎ ÁýÇÕ ±¸Á¶¸¦ »ç¿ëÇÑ´Ù. ECOFF¿Í XCOFF°°Àº ÀÓÀÇ ¼½¼ÇÀ» Áö¿øÇÏÁö ¾Ê´Â ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äÀ» ¸µÅ©ÇÒ ¶§ ¸µÄ¿´Â ÀÚµ¿À¸·Î C++ ±Û·Î¹ú »ý¼ºÀÚ¿Í Æı«ÀÚ¸¦ À̸§À¸·Î ÀνÄÇÑ´Ù. ÀÌ·± ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äµé¿¡ ´ëÇؼ­ CONSTRUCTORS ¸í·ÁÀº ¸µÄ¿¿¡°Ô ÀÌ Á¤º¸°¡ ³õ¿©¾ß ÇÒ À§Ä¡¸¦ ¸»ÇÑ´Ù. CONSTRUCTORS ¸í·ÉÀº ´Ù¸¥ ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äµé¿¡ ´ëÇؼ­ ¹«½ÃµÈ´Ù. __CTOR_LIST__ ½É¹úÀº ±Û·Î¹ú »ý¼ºÀÚÀÇ ½ÃÀÛÁ¡À» ¸¶Å·ÇÏ°í __DTOR_LIST´Â ³¡À» ¸¶Å·ÇÑ´Ù. ¸®½ºÆ®ÀÇ Ã¹¹ø° ´Ü¾î´Â ¿£Æ®¸®µéÀÇ °³¼öÀÌ°í ±× µÚ¿¡ °¢ »ý¼ºÀÚ³ª Æı«ÀÚÀÇ ÁÖ¼Ò°¡ µû¶ó¿À¸ç ±× µÚ¿¡´Â zero word°¡ µû¶ó ¿Â´Ù. ÄÄÆÄÀÏ·¯´Â ¹Ýµå½Ã ±× Äڵ带 ½ÇÁ¦·Î ½ÇÇàÇϵµ·Ï Á¤·ÄµÇ¾î¾ß ÇÑ´Ù. ÀÌ·± ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äµé¿¡ ´ëÇؼ­ __main ¼­ºê·çƾÀ¸·ÎºÎÅÍ GNU C++°¡ »ý¼ºÀÚ¸¦ È£ÃâÇÑ´Ù; __main¿¡ ´ëÇÑ È£ÃâÀÌ ÀÚµ¿À¸·Î mainÀÇ ½ÃÀÛ ÄÚµå¾ÈÀ¸·Î »ðÀԵȴÙ. GNU C++´Â atexit¸¦ »ç¿ëÇϰųª ÇÔ¼ö exit·ÎºÎÅÍ Á÷Á¢ÀûÀ¸·Î Æı«ÀÚµéÀ» ½ÇÇàÇÑ´Ù. ´Ù¼ö ¼½¼ÇµéÀ» Áö¿øÇÏ´Â COFF ¶Ç´Â ELF¿Í °°Àº ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äµé¿¡ ´ëÇؼ­ GNU C++´Â ÀϹÝÀûÀ¸·Î ±Û·Î¹ú »ý¼ºÀÚ¿Í Æı«ÀÚÀÇ ÁÖ¼ÒµéÀ» .ctors¿Í .dtors ¼½¼Çµé¾È¿¡ ³Ö´Â´Ù. ´ÙÀ½À» ¿©·¯ºÐÀÇ ¸µÄ¿ ½ºÅ©¸³Æ®¾È¿¡ ³Ö´Â °ÍÀº GNU C++ ½Ç½Ã°£ Äڵ尡 º¸°ÔµÉ °ÍÀ¸·Î ±â´ëÇÏ´Â Å×À̺í Á¾·ù¸¦ ºôµåÇÒ °ÍÀÌ´Ù.
      __CTOR_LIST__ = .;
      LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
      *(.ctors)
      LONG(0)
      __CTOR_END__ = .;
      __DTOR_LIST__ = .;
      LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
      *(.dtors)
      LONG(0)
      __DTOR_END__ = .;
ÀϹÝÀûÀ¸·Î ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿´Â ÀÌ·± À̽´µéÀ» ÀÚµ¿À¸·Î ó¸®ÇÒ °ÍÀÌ°í ¿©·¯ºÐÀº ±×°Íµé¿¡ °ü½ÉÀ» °¡Áú ÇÊ¿ä°¡ ¾øÀ» °ÍÀÌ´Ù. ±×·¯³ª ¿©·¯ºÐÀº C++À» »ç¿ëÇÏ°í »ç¿ëÀÚ Á¤ÀÇ ¸µÄ¿ ½ºÅ©¸³¸¦ ÀÛ¼ºÇÏ°í ÀÖ´Ù¸é ÀÌ°ÍÀ» °í·ÁÇØ¾ß ÇÒ °ÍÀÌ´Ù.
FLOAT
NOFLOAT
ÀÌ·± Å°¿öµåµéÀº ¾î¶² ´õ ¿À·¡µÈ ¸µÄ¿µé¿¡¼­ Ưº°ÇÑ ¼öÇÐ ¼­ºê·çƾ ¶óÀ̺귯¸®¸¦ ¿äûÇϱâ À§Çؼ­ »ç¿ëµÇ¾ú´Ù. ld´Â ´ë½Å¿¡ ÇÊ¿äÇÑ ¼­ºê·çƾµéÀÌ ¸ðµÎ ¾ÆÄ«À̺ê·Î ¸µÅ©Çϱâ À§ÇÑ ÀÏ¹Ý ¸ÞÄ«´ÏÁòµéÀ» »ç¿ëÇÏ¿© ÁöÁ¤µÈ ¶óÀ̺귯¸®µé¾È¿¡ ÀÖ´Ù´Â °ÍÀ» °¡Á¤ÇÏ°í, ÀÌ·± Å°¿öµåµéÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù: ±×·¯³ª ´õ ¿À·¡µÈ ¸µÄ¿µé¿¡ ´ëÇؼ­ ¾²¿©Áø ½ºÅ©¸³Æ®ÀÇ »ç¿ëÀ» Çã¿ëÇϱâ À§Çؼ­ FLOAT°ú NOFLOAT Å°¿öµåµéÀÌ ¹Þ¾Æµé¿©ÁöÁö¸¸ ¹«½ÃµÈ´Ù.
FORCE_COMMON_ALLOCATION
ÀÌ ¸í·ÉÀº `-d' ¸í·ÉÇà ¿É¼Ç°ú µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áø´Ù: ld°¡ Àç¹èÄ¡ °¡´ÉÇÑ Ãâ·Â ÆÄÀÏÀÌ ÁöÁ¤µÇ´õ¶óµµ (`-r') °ø¿ë ½É¹úµé¿¡ °ø°£À» ld°¡ ÇÒ´çÇϵµ·Ï Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.
INCLUDE filename
¸µÄ¿ ½ºÅ©¸³Æ® filename¸¦ ÀÌ ½ÃÁ¡¿¡ Æ÷ÇÔÇÑ´Ù. ±× ÆÄÀÏÀº ÇöÀç µð·ºÅ͸®¿¡¼­, ±×¸®°í -L ¿É¼ÇÀ¸·Î ÁÖ¾îÁø ÀÓÀÇÀÇ µð·ºÅ͸®¿¡¼­ °Ë»öµÉ °ÍÀÌ´Ù. ¿©·¯ºÐÀº INCLUDE¿¡ ´ëÇÑ È£ÃâÀ» 10´Ü°è±îÁö °ãÄ¥ ¼ö ÀÖ´Ù.
INPUT ( file, file, ... )
INPUT ( file file ... )
ÀÌ ¸í·ÉÀ» »ç¿ëÇؼ­, ±×µéÀ» Ưº°ÇÑ ¼½¼Ç Á¤ÀÇ¿¡ Æ÷ÇÔÇÏÁö ¾Ê°í¼­, ¹ÙÀ̳ʸ® ÀÔ·Â ÆÄÀϵéÀ» ¸µÅ©¿¡ Æ÷ÇÔÇÑ´Ù. °¢ file¿¡ ´ëÇÑ ¿ÏÀüÇÑ À̸§À» ÁöÁ¤ÇÏÀÚ. ÇÊ¿äÇÏ´Ù¸é `.a'¸¦ Æ÷ÇÔÇؼ­. ld´Â °¢ fileÀ», ¸í·ÉÇà¿¡¼­ ÁöÁ¤ÇÑ ÆÄÀϵ鿡 ´ëÇؼ­ ÇÏ´Â °Í°ú µ¿ÀÏÇÏ°Ô, ¾ÆÄ«À̺ê-¶óÀ̺귯¸® °Ë»ö °æ·Î¿¡¼­ ã´Â´Ù. `-L'¿¡ ´ëÇÑ ¼³¸íÀ» section ¸í·ÉÇà ¿É¼Çµé(Command Line Options)¿¡¼­ º¸ÀÚ. `-lfile'¸¦ »ç¿ëÇÑ´Ù¸é ld´Â libfile.aÀÇ À̸§À» ¸í·ÉÇà ¸Å°³º¯¼ö `-l'¿¡¼­¿Í °°ÀÌ º¯È¯ÇÒ °ÍÀÌ´Ù.
GROUP ( file, file, ... )
GROUP ( file file ... )
ÀÌ ¸í·ÉÀº INPUT¿Í ºñ½ÁÇÏ´Ù. À̸§ÀÖ´Â ÆÄÀϵéÀº ¸ðµÎ ¾ÆÄ«À̺êµéÀ̾î¾ß ÇÑ´Ù´Â °Í°ú ±×µéÀÌ »õ·Î¿î Á¤ÀǵÇÁö ¾ÊÀº ÂüÁ¶µéÀÌ »ý¼ºµÇÁö ¾ÊÀ» ¶§±îÁö ¹Ýº¹Çؼ­ °Ë»öµÈ´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°í ºñ½ÁÇÏ´Ù. `-('¿¡ ´ëÇÑ ¼³¸íÀº section ¸í·ÉÇà ¿É¼Çµé(Command Line Options)¸¦ º¸ÀÚ.
OUTPUT ( filename )
ÀÌ ¸í·ÉÀº ¸µÅ© Ãâ·Â ÆÄÀÏÀÇÀ̸§À» filename.·Î ÁöÁ¤ÇÒ ¶§ »ç¿ëÇÑ´Ù. OUTPUT(filename)ÀÇ È¿°ú´Â, ÀÌ°ÍÀ» ¿À¹ö¶óÀ̵åÇÏ´Â `-o filename'ÀÇ È¿°ú¿Í µ¿ÀÏÇÏ´Ù. ¿©·¯ºÐÀº ÀÌ ¸í·ÉÀ» »ç¿ëÇؼ­ a.outÀÌ ¾Æ´Ñ µðÆúÆ® Ãâ·Â-ÆÄÀÏ À̸§À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
OUTPUT_ARCH ( bfdname )
BFD ¹é-¿£µå ·çƾµé(see section BFD)¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â À̸§µé ÁßÀÇ Çϳª·Î, Ưº°ÇÑ Ãâ·Â ¸Ó½® ¾ÆÅ°ÅØÃĸ¦ ÁöÁ¤ÇÑ´Ù. ÀÌ ¸í·ÉÀº Á¾Á¾ ºÒÇÊ¿äÇÏ´Ù; ¾ÆÅ°ÅØÃÄ´Â Á¾Á¾ ½Ã½ºÅÛ BFD ¼³Á¤À̳ª OUTPUT_FORMAT ¸í·ÉÀÇ ºÎ´ë È¿°ú·Î½á ¾Ï¹¬ÀûÀ¸·Î ¼³Á¤µÈ´Ù.
OUTPUT_FORMAT ( bfdname )
ld°¡ ´Ù¼öÀÇ ¿ÀºêÁ§Æ® ÄÚµå Æ÷¸äµéÀ» Áö¿øÇϵµ·Ï ¼³Á¤µÉ ¶§ ¿©·¯ºÐÀº ÀÌ ¸í·ÉÀ» »ç¿ëÇؼ­ Ưº°ÇÑ Ãâ·Â Æ÷¸äÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. bfdname´Â BFD ¹é-¿£µå ·çƾ(see section BFD)µé¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â À̸§µé ÁßÀÇ ÇϳªÀÌ´Ù. `--oformat' ¸í·ÉÇà ¿É¼ÇÀÇ È¿°ú¿Í µ¿ÀÏÇÏ´Ù. ÀÌ ¼±ÅÃÀº Ãâ·Â ÆÄÀÏ¿¡¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù; °ü·ÃµÈ ¸í·É TARGET´Â ÁÖ·Î ÀÔ·Â ÆÄÀϵ鿡 ¿µÇâÀ» ¹ÌÄ£´Ù.
SEARCH_DIR ( path )
path¸¦ ld°¡ ¾ÆÄ«ÀÌºê ¶óÀ̺귯¸®µéÀ» ã´Â °æ·Î ¸®½ºÆ®¿¡ Ãß°¡ÇÑ´Ù. SEARCH_DIR(path)´Â ¸í·ÉÇàÀÇ `-Lpath'°ú µ¿ÀÏÇÑ È¿°ú¸¦ °¡Áø´Ù.
STARTUP ( filename )
filenameÀÌ ¸µÅ© °úÁ¤¿¡¼­ »ç¿ëµÈ ù¹ø° ÀÔ·Â ÆÄÀÏÀ̵µ·Ï ÇÑ´Ù.
TARGET ( format )
ld°¡ ´Ù¼öÀÇ ¿ÀºêÁ§Æ® ÄÚµå Æ÷¸äµéÀ» Áö¿øÇϵµ·Ï ¼³Á¤µÉ ¶§, ÀÌ ¸í·ÉÀ» »ç¿ëÇؼ­ ÀÔ·Â-ÆÄÀÏ ¿ÀºêÁ§Æ® Æ÷¸äÀ» º¯°æÇÒ ¼ö ÀÖ´Ù(¸í·É-Çà ¿É¼Ç `-b'³ª ¶Ç´Â À¯»ç¾î `--format'¸¦ »ç¿ëÇÏ´Â °Í°ú °°ÀÌ). format ¸Å°³º¯¼ö´Â BFD¿¡ ÀÇÇؼ­ ¹ÙÀ̳ʸ® Æ÷¸äµéÀÇ À̸§À» ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµÇ´Â ¹®ÀÚ¿­µé ÁßÀÇ ÇϳªÀÌ´Ù. TARGETÀÌ ÁöÁ¤µÇÁö¸¸ OUTPUT_FORMATÀº ¾Æ´Ï¶ó¸é ¸¶Áö¸· TARGETÀÌ ¶ÇÇÑ ld Ãâ·Â ÆÄÀÏ¿¡ ´ëÇÑ µðÆúÆ® Æ÷¸äÀ¸·Î½á »ç¿ëµÈ´Ù. See section BFD. TARGET ¸í·ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ld´Â Ãâ·Â ÆÄÀÏ Æ÷¸äÀ» ¼±ÅÃÇϱâ À§Çؼ­ GNUTARGET ȯ°æº¯¼öÀÇ °ªÀ», ÀÌ°ÍÀÌ °¡´ÉÇÏ´Ù¸é, »ç¿ëÇÑ´Ù. ±× º¯¼öµµ ¾ø´Ù¸é ld´Â BFD ¶óÀ̺귯¸®µé¾È¿¡¼­ ¿©·¯ºÐÀÇ ¸Ó½®À» À§Çؼ­ ¼³Á¤µÈ µðÆúÆ® Æ÷¸äÀ» »ç¿ëÇÑ´Ù.
NOCROSSREFS ( section section ... )
ÀÌ ¸í·ÉÀº ld¿¡°Ô ¾î¶² ¼½¼Çµé »çÀÌ¿¡ ÀÖ´Â ÂüÁ¶µé¿¡ ´ëÇؼ­ ¿¡·¯¸¦ ¹ß»ýÇϵµ·Ï Ç϶ó°í Áö½ÃÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¾î¶² ÇÁ·Î±×·¥ ŸÀԵ鿡¼­´Â, Ưº°È÷ ÀÓº£µðµå ½Ã½ºÅ۵鿡¼­´Â, ÇÑ ¼½¼ÇÀÌ ¸Þ¸ð¸®·Î ·ÎµåµÉ ¶§ ´Ù¸¥ ¼½¼ÇÀº ±×·¸Áö ¾ÊÀ» °ÍÀÌ´Ù. µÎ ¼½¼Çµé »çÀÌÀÇ Á÷Á¢ÀûÀÎ ÂüÁ¶µéÀº ¾î¶² °ÍÀÌµç ¿¡·¯¸¦ ¹ß»ýÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î¼­ ÇÑ ¼½¼Ç¿¡ ÀÖ´Â Äڵ尡 ´Ù¸¥ ¼½¼Ç¿¡ ÀÖ´Â ÇÔ¼ö¸¦ È£ÃâÇß´Ù¸é ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. NOCROSSREFS ¸í·ÉÀº ¼½¼Ç À̸§µé ¸®½ºÆ®¸¦ ÃëÇÑ´Ù. ld°¡ ÀÌ·± ¼½¼Çµé »çÀÌÀÇ ±³Â÷ ÂüÁ¶¸¦ Çϳª¶óµµ °ËÃâÇÑ´Ù¸é ÀÌ°ÍÀº ¿¡·¯¸¦ º¸°íÇÏ°í 0ÀÌ ¾Æ´Ñ Á¾·á »óÅ°ªÀ» ¸®ÅÏÇÑ´Ù. NOCROSSREFS ¸í·ÉÀº SECTIONS ¸í·É¿¡¼­ Á¤ÀÇµÈ Ãâ·Â ¼½¼Ç À̸§µéÀ» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº ÀÔ·Â ¼½¼ÇµéÀÇ À̸§Àº »ç¿ëÇÏÁö ¾Ê´Â´Ù.


Go to the first, previous, next, last section, table of contents.