1619, 1/81 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   wolverine
   [ÀÚÀÛ] C °­ÁÂ [1] - Compiler Tool Chain

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2033 [º¹»ç]


¾È³çÇϼ¼¿ä. C ¾ð¾î °­Á¸¦ ¿Ã¸®·Á°í ÇÕ´Ï´Ù.
¾à 10¿©³âÀ» embedded software °³¹ßÀ» ÇØ¿À¸é¼­
¾Ë°ÔµÈ Áö½ÄµéÀ» ȸ¿ø ¿©·¯ºÐ°ú ÇÔ²² °øÀ¯ÇÏ·Á°í ÇÕ´Ï´Ù.
Ȥ½Ã¶óµµ °­Á¿¡ ¿À·ù³ª ±Ã±ÝÇÑ Á¡Àº ¾ðÁ¦¶óµµ ¾Ë·ÁÁֽñ⠹ٶø´Ï´Ù.

C¾ð¾î¸¦ °øºÎÇÏ´Ù º¸¸é, C/C++ Compiler Tool ChainÀ̶ó´Â ¸»À» Á¢ÇÏ°Ô µË´Ï´Ù.
À̹ø °­Á¿¡¼­´Â Compiler Tool ChainÀ̶õ ¹«¾ùÀΰ¡¿¡ ´ëÇØ¼­ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

# Compiler Tool Chain
- C code¸¦ ½ÇÇà°¡´ÉÇÑ binary·Î ¸¸µé±â À§Çؼ­ ÇÊ¿äÇÑ tool µéÀÇ ÁýÇÕ

Tool ChainÀº ±âº»ÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÆÄÀϵéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
- compiler, linker ½ÇÇàÆÄÀÏ
- ±âŸ source build¸¦ À§ÇÑ utility ½ÇÇà ÆÄÀϵé
- Á¦°øÇÏ´Â library ¹× header ÆÄÀϵé
- ¹®¼­

Source Code´Â compiler¿¡ ÀÇÇØ¼­ object code ÇüÅ·Πº¯È¯ÀÌ µÇ°í,
object code´Â linker¿¡ ÀÇÇØ¼­ ½ÇÇà °¡´ÉÇÑ binary ¶Ç´Â library·Î º¯È¯ÀÌ µË´Ï´Ù.

¿¹¸¦ µé¾î¼­ window pc¿¡¼­ c programmingÀ» Çϱâ À§Çؼ­´Â
compiler tool chainÀÌ ÇÊ¿äÇÕ´Ï´Ù.
http://www.mingw.org/ ¿¡¼­ mingw¶ó´Â ¹«·á c compiler tool chainÀ» ´Ù¿î¹Þ¾Æ¼­ »ç¿ëÇÒ ¼öµµ ÀÖ°í,
Microsoft VC++À» ¼³Ä¡Çؼ­ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
À̰æ¿ì¿¡´Â window pc¿¡¼­ Build(Compile & Link)ÇÑ °á°ú¹°ÀÌ .exe ÆÄÀÏ ÇüÅÂÀÇ
½ÇÇàÆÄÀÏ·Î ³ª¿À°ÔµÇ¸ç, À̰ÍÀº window pc¿¡¼­¸¸ ½ÇÇàµÉ ¼ö ÀÖ½À´Ï´Ù.

Note:
IDE(Integrated Development Environment)¿Í Compiler Tool ChainÀº ´Ù¸¥ ÀÇ¹Ì ÀÔ´Ï´Ù.
mingw´Â ¼ø¼öÇÑ compiler tool chain¸¸ Áö¿øÇÕ´Ï´Ù.
VC++Àº IDE¸¦ ¼³Ä¡ÇϰԵǸé, IDE¿Í compiler tool chainÀÌ ÀÚµ¿ÀûÀ¸·Î °°ÀÌ ¼³Ä¡µË´Ï´Ù.
IDE´Â compiler tool chain + source code editor + debugging ȯ°æ µîÀ» GUI applicationÀ¸·Î
ÅëÇÕÀûÀ¸·Î ¸¸µé¾î ³õÀº °³¹ß tool ÀÔ´Ï´Ù.
IDE´Â Mouse click ¹× ¸Þ´º Á¶ÀÛÀ¸·Î source code¸¦ ½±°Ô build(compile & link) ÇÒ ¼ö ÀÖµµ·Ï
¸¸µé¾î ³õÀº application À̸ç, ÃÖÁ¾ÀûÀ¸·Î´Â compiler tool chainÀ» ½ÇÇà½ÃÄѼ­ build¸¦ ¼öÇàÇÕ´Ï´Ù.
¹Ý¸é¿¡, compiler tool chainÀº GUI¸¦ Áö¿øÇÏÁö ¾Ê´Â console application µéÀÇ ÁýÇÕÀÔ´Ï´Ù.
(IDE¸¦ »ç¿ëÇÏÁö ¾Ê°íµµ dos â¿¡¼­ Á÷Á¢ compiler tool chainÀ» ÀÌ¿ëÇØ¼­ build°¡ °¡´É...)

¶ÇÇÑ, ARM core¿¡¼­ ±¸µ¿µÇ´Â software(firmware)¸¦ ¸¸µé±â À§Çؼ­´Â
ÇØ´ç ARM core¸¦ À§ÇÑ compiler tool chainÀÌ ÇÊ¿äÇÕ´Ï´Ù.
ÀÌ °æ¿ì¿¡´Â window pc¿¡¼­ ÇØ´ç compiler tool chainÀ» ÀÌ¿ëÇØ¼­,
ARM core¸¦ À§ÇÑ software(firmware)¸¦ buildÇϰí,
build ÇÑ °á°ú¹°Àº ÇØ´ç ARM core¿¡¼­¸¸ ½ÇÇà(±¸µ¿) µÉ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ °æ¿ì¿¡´Â Cross Compiler Tool ChainÀ̶ó°í ÇÕ´Ï´Ù.
(BuildÇÏ´Â system(PC)¿Í ½ÇÇàµÇ´Â system(ARM core)ÀÌ ¼­·Î ´Ù¸¦ °æ¿ì...)

Compiler¸¦ ±¸µ¿Çϱâ À§ÇÑ ÀÔ·ÂÀº Å©°Ô source file°ú optionÀÔ´Ï´Ù.

¿¹¸¦ µé¾î¼­,

compiler.exe source.c source.obj option1 option2 ...

À̶ó°í ¸í·ÉÀ» Ä¡¸é, source.c´Â ÇØ´ç option¿¡ ÀÇÇØ¼­ source.obj ·Î compileÀÌ µË´Ï´Ù.
À̶§¿¡ optionÀº °¢°¢ÀÇ compiler¸¶´Ù ´Ù¸¨´Ï´Ù.
µû¶ó¼­, °³¹ßÀÚ´Â »ç¿ëÇϰíÀÚ ÇÏ´Â compiler tool chainÀÇ ¹®¼­¸¦ º¸°í,
¾î¶°ÇÑ optionÀÌ ¾î¶»°Ô »ç¿ëÀÌ µÇ´ÂÁö ¹Ì¸® È®ÀÎÀ» ÇØ¾ß ÇÕ´Ï´Ù.

Linker¸¦ ±¸µ¿Çϱâ À§ÇÑ ÀÔ·ÂÀº Å©°Ô object file°ú option, ±×¸®°í linker command fileÀÔ´Ï´Ù.

linker.exe obj1 obj2 obj3... option1 option2 ... linkerCommandFIle

À̶ó°í ¸í·ÉÀ» Ä¡¸é, °¢°¢ÀÇ obj1,2,3..°¡ ¸ðµÎ linker¿¡ ÀÇÇØ¼­ linkingÀÌ µÇ¾î
ÇϳªÀÇ ½ÇÇà°¡´ÉÇÑ ÆÄÀÏ·Î º¯È¯ÀÌ µË´Ï´Ù.
À̶§¿¡, option ¶ÇÇÑ compiler tool chain¸¶´Ù ¾à°£¾¿ ´Ù¸£±â ¶§¹®¿¡,
°³¹ßÀÚ´Â Á¦°øµÇ´Â ¹®¼­¸¦ ¹Ì¸® °øºÎÇØ¾ß ÇÕ´Ï´Ù.

Linker command fileÀ̶ó´Â °ÍÀº °³¹ßÀÚ°¡ ¿øÇÏ´Â memory allocationÀ» linker¿¡°Ô ¾Ë·ÁÁÝ´Ï´Ù.
Linker command file Å©°Ô µÎ°¡Áö·Î ±¸¼ºÀÌ µË´Ï´Ù.
- memory description
  BuildµÈ ½ÇÇàÆÄÀÏÀÌ µ¹¾Æ°¥ systemÀÇ memory ±¸Á¶¸¦ linker¿¡°Ô ¾Ë·ÁÁÜ
- memory allocation
  ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾î Áú ¶§ °³¹ßÀÚ°¡ ¿øÇÏ´Â ÇüÅ·Πmemory allocationÀ» ¼³Á¤ÇÒ ¼ö ÀÖÀ½
  StackÀÇ À§Ä¡ ¹× Å©±â
  HeapÀÇ À§Ä¡ ¹× Å©±â
  CodeÀÇ À§Ä¡ ¹× Å©±â
  ±âŸ Global º¯¼öµéÀÇ À§Ä¡ ÁöÁ¤µî
Linker command fileÀÇ ¹®¹ý ¶ÇÇÑ °¢°¢ÀÇ tool chain¸¶´Ù ¼­·Î ´Ù¸¨´Ï´Ù.
°³¹ßÀÚ´Â Á¦°øµÇ´Â ¹®¼­¸¦ °øºÎÇØ¾ß¸¸ ÇÕ´Ï´Ù.

ÇϳªÀÇ core processor¿¡ ´ëÇØ¼­µµ ¼­·Î ´Ù¸¥ Compiler Tool ChainµéÀÌ Á¸ÀçÇÒ ¼ö ÀÖÀ¸¸ç,
´ëºÎºÐÀÇ compiler tool chainÀº ±âº»ÀûÀÎ »ç¿ë¹ýÀÌ °°Áö¸¸,
Áö¿øÇÏ´Â optionÀ̳ª ¹®¹ýµî¿¡¼­ ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ» ¼ö°¡ ÀÖ½À´Ï´Ù.
µû¶ó¼­, °³¹ßÀÚ´Â Ç×»ó °°ÀÌ Á¦°øµÇ´Â ¹®¼­¸¦ ¸ÕÀú study ÇÏ´Â ½À°üÀ» µé¿©¾ß ÇÒ °Í °°½À´Ï´Ù.
±×·¯ÇÑ ¹®¼­¸¦ Á÷Á¢ Àо¸é¼­ ¾ò´Â Áö½ÄµéÀÌ¾ß ¸»·Î ÂüÁö½ÄÀÎ °Í °°½À´Ï´Ù.

ÀüüÀûÀÎ Å« ±×¸²À» ºÁ¾ß ÇÕ´Ï´Ù.
¿äÁòÀº ´ëºÎºÐ VC++°ú °°Àº IDE¸¦ Á¦°øÇϱ⠶§¹®¿¡,
make file ±îÁö °øºÎÇÏÁö´Â ¾Ê´õ¶óµµ,
IDE¿¡¼­ menu ¼³Á¤ ¹× clickÀ» ÇßÀ»¶§¿¡,
compiler tool chain¿¡¼­ ¾î¶°ÇÑ µ¿ÀÛµéÀÌ ÀÌ·ç¾îÁö°Ô µÇ´ÂÁö
Å« ±×¸²À» ±×¸± ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.

¶ÇÇÑ, ÀÚ½ÅÀÌ »ç¿ëÇϰí ÀÖ´Â compiler tool chain¿¡ ´ëÇÑ ¹®¼­¸¦ °øºÎÇØ¾ß¸¸,
IDE¸¦ »ç¿ëÇÒ ¶§¿¡, GUI¿¡ ÀÇÇØ¼­ ¼³Á¤µÇ´Â optionµéÀ» Àß »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
IDE´Â »ç¿ëÇÏ´Ù°¡ º¸¸é ÀÚ¿¬½º·´°Ô Å͵æµÇÁö¸¸,
compiler tool chainÀÇ ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº ¹®¼­¸¦ ÀÚ¼¼È÷ ºÁ¾ß ÇÕ´Ï´Ù.

ÀÌ·¸°Ô ÇϳªÀÇ tool chain¿¡ ´ëÇØ¼­ ½ÀµæÀÌ µÇ¸é,
´Ù¸¥ processor³ª ´Ù¸¥ compiler tool chainÀ» »ç¿ëÇÏ°Ô µÇ´õ¶óµµ,
ºü¸¥ ½Ã°£ ¾È¿¡ ½±°Ô ÀûÀÀ(?)ÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.

ÀÌ»óÀ¸·Î À̹ø °­ÀÇ´Â ¸¶Ä¨´Ï´Ù.

Best Regards,
Wolverine












  Hit : 9637     Date : 2012/07/04 11:12



    
pkw5240 ¿À!! ¿¹Â¾¿¡ ÁÖ¿öµé¾ú´ø °ÍµéÀÌ
Áö±Ý À̱ÛÀ» ÀÐÀ½À¸·Î½á Á¤¸®°¡ µÈ°Å°°¾Æ¿ä! ¤¾¤¾°¨»çÇÕ´Ï´Ù!
2012/07/11  
wolverine µµ¿òÀÌ µÇ¾ú´Ù´Ï ´ÙÇàÀ̳׿ä. °¨»çÇÕ´Ï´Ù. 2012/07/11  
show1546 °¨»çÇÕ´Ï´Ù ¿ì¿Í °­ÀÇ Á¤¸» ¯ÀÌ¿¡¿ä 2012/07/17  
kbg06163 ¾ÆÁ÷Àº Àß ¸ð¸£°Ù½À´Ï´Ù ¤Ð¤Ð, 2012/07/28