´©±¸³ª ½±°Ô ¹è¿ì´Â ÀÓº£µðµå ¸®´ª½º¨è
±³Â÷ °³¹ß ȯ°æÀ» ±¸ÃàÇÏÀÚ
Áö³ È£¿¡¼´Â ÀÓº£µðµå ¸®´ª½º¶õ ¹«¾ùÀΰ¡¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. À̹ø È£ºÎÅÍ´Â ÀÓº£µðµå ¸®´ª½º
¸¦ µ¿ÀÛ½Ã۱â À§ÇØ ÇÊ¿äÇÑ »çÇ׿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇϰڴÙ. ±× Áß Ã¹ ¹øÂ°·Î ÇÊ¿äÇÑ »çÇ×Àº ±³
Â÷ °³¹ß ȯ°æ(Cross Development Environment)À» ±¸ÃàÇÏ´Â °úÁ¤ÀÌ´Ù.
±Û _ À念ÁØ »ï¼ºÀüÀÚ SW¿¬±¸¼Ò Linux Technology Group ¼±ÀÓ ¿¬±¸¿ø
¿¬Àç ¼ø¼
¨ç ÀÓº£µðµå ¸®´ª½º ù °ÉÀ½¸¶
¨è ±³Â÷ °³¹ß ȯ°æÀ» ±¸ÃàÇÏÀÚ
¨é ºÎÆ®·Î´õ ¼³Á¤Àº ÀÌ·¸°Ô
¨ê Ä¿³ÎÀ» ¿Ã·Áº¸ÀÚ
¨ë ·çÆ® ÆÄÀÏ ½Ã½ºÅÛÀº
¾î¶»°Ô ±¸¼ºµÇ´Â°¡
¨ì 2% ºÎÁ·ÇÔÀ» ä¿öº¸ÀÚ
±³Â÷ °³¹ß ȯ°æ ±¸ÃàÀÇ ±âÃÊ
ÀϹÝÀûÀÎ ÇÁ·Î±×·¥ÀÇ °³¹ß °úÁ¤À» »ìÆìº¸¸é ´ÙÀ½°ú °°´Ù.
1. ÇÁ·Î±×·¥ ¼Ò½º Äڵ带 ÀÛ¼º : ¿¡µðÅÍ »ç¿ë
2. ÇÁ·Î±×·¥ ºôµå : ½Ã½ºÅÛ¿¡¼ ½ÇÇà °¡´ÉÇÑ À̹ÌÁö·Î ÄÄÆÄÀÏ : ÄÄÆÄÀÏ·¯ »ç¿ë
3. ÇÁ·Î±×·¥ ½ÇÇà, Å×½ºÆ®
4. µð¹ö±ë : µð¹ö±ë Åø »ç¿ë
µð¹ö±ëÀ» ÇÏ´Â °úÁ¤¿¡¼ ÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é, ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çشٽà ¼Ò½ºÄڵ带 ¼öÁ¤Çϰí, ºôµå, ½ÇÇàÇØº¸´Â ÀýÂ÷¸¦ ¹Ýº¹ÇÏ°Ô µÈ´Ù. À§ °úÁ¤À» ¼öÇàÇϴµ¥ ¿¡µðÅÍ, ÄÄÆÄÀÏ·¯, µð¹ö±ë ÅøÀÌ »ç¿ëµÇ¾ú´Ù. °³¹ßÀ» Çϴµ¥ À־ ÀÌ¿Í °°Àº ÅøµéÀÌ ÇÊ¿äÇϰí, À̸¦ °³¹ß ȯ°æÀ̶ó°í ÁöĪÇÑ´Ù. º¸Åë PC ȯ°æ¿¡¼´Â À§ ¸ðµç ÀÛ¾÷À» PC¿¡¼ Á÷Á¢ ¼öÇàÇÒ ¼ö°¡ ÀÖ´Ù. Áï, PC¿¡¼ Á÷Á¢ °³¹ßÇϰí, °³¹ßµÈ °á°ú¹° ¿ª½Ã PC¿¡¼ ¹Ù·Î µ¿ÀÛ½ÃÄÑ º¼ ¼ö°¡ ÀÖ´Â °ÍÀÌ´Ù. ÀÌ´Â ´Ù¸¥ ÀÓº£µðµå ½Ã½ºÅÛ¿¡ ºñÇØ PC°¡ »ç¾çÀÌ ³ô°í ¿©·¯¸ð·Î °³¹ßÀ» Çϱ⿡ ÀûÇÕÇÑ È¯°æÀ» °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù.
¹Ý¸é, Áö³ ½Ã°£¿¡ ¾ð±ÞÇßµíÀÌ ÀÓº£µðµå ½Ã½ºÅÛÀº »ç¾çÀÌ ³·¾Æ °³¹ßÀ» Çϱ⿡ ºÎÁ·Çϰųª ½ÉÁö¾î´Â ºÒ °¡´ÉÇÑ °æ¿ì±îÁö Àֱ⠶§¹®¿¡, ¿ÜºÎ ȯ°æ¿¡¼ ÇÁ·Î±×·¥À» °³¹ßÇÏ°í °³¹ßµÈ °á°ú¹°À» ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ ¼öÇàÇÏ´Â ±¸Á¶¸¦ ÀÌ¿ëÇØ °³¹ßÀ» ÇÏ°Ô µÈ´Ù. ÀÌ·¸µí ¿ÜºÎ ȯ°æ¿¡¼ ÇÁ·Î±×·¥À» °³¹ßÇÏ´Â ±¸Á¶¸¦ ±³Â÷ °³¹ß ȯ°æÀ̶ó°í ÇÑ´Ù.
À̶§, °³¹ßÀÇ ´ë»óÀÌ µÇ´Â ÀÓº£µðµå ½Ã½ºÅÛÀ» Ÿ°Ù(Target)À̶ó°í Çϰí, Ÿ°Ù¿¡¼ ½ÇÇàµÉ ÇÁ·Î±×·¥À» °³¹ßÇϴµ¥ »ç¿ëµÇ´Â ½Ã½ºÅÛÀ» È£½ºÆ®(Host)¶ó°í ÇÑ´Ù. È£½ºÆ®¿¡¼´Â ÇØ´ç Ÿ
°ÙÀ» °³¹ßÇϱâ À§ÇÑ È¯°æÀÌ ÇÊ¿äÇÏ°Ô µÇ´Âµ¥, ÀÌ È¯°æÀ» Ÿ°ÙÀ» °³¹ßÇϴµ¥ ÇÊ¿ä
ÇÑ ÅøµéÀÇ ¸ðÀÓÀ̶ó°í ÇÏ¿© ÅøÃ¼ÀÎ(Toolchain)À̶ó°í ÇÑ´Ù. ´ÙÀ½Àº ±³Â÷ °³¹ß ȯ°æÀ» °£´ÜÇÏ°Ô ³ªÅ¸³½ ±×¸²ÀÌ´Ù.

È£½ºÆ®¿¡¼ ¸ÕÀú ÇÁ·Î±×·¥À» °³¹ßÇϰí, Ÿ°Ù¿¡¼ À̸¦ ´Ù¿î·Îµå ¹Þ¾Æ ÇÁ·Î±×·¥À» ½ÇÇàÇϰí, Ÿ°ÙÀÇ ¼öÇà»óŸ¦ º¸°Å³ª µð¹ö±ëÀÌ ÇÊ¿äÇÑ °æ¿ì ¿ª½Ã È£½ºÆ®¿¡ ¿¬°áÇÏ¿© Ÿ°ÙÀÇ »óŸ¦ ¸ð´ÏÅ͸µÇÏ´Â ±¸Á¶·Î µÇ¾î ÀÖ´Ù. À̶§, ´Ù¿î·ÎµåÀÇ °æ¿ì´Â º¸Åë ¼Óµµ°¡ ºü¸¥ ·£ ÄÉÀ̺íÀ» ÀÌ¿ëÇϰí, ¸ð´ÏÅ͸µ, µð¹ö±ë µîÀº ÄܼÖ(½Ã¸®¾ó ÄÉÀ̺í)À» ÀÌ¿ëÇÑ´Ù.
PC¿¡¼ °£´ÜÇÑ ÇÁ·Î±×·¥À» °³¹ßÇÏ´Â °úÁ¤À» º¸¸é ´ÙÀ½°ú °°´Ù.
À§ ÇÁ·Î±×·¥Àº ȸ鿡¡°Hello¡±¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. À̸¦ ´ÙÀ½°ú °°ÀÌ ºôµåÇÏ¿© ½ÇÇàÇØ º¸¸é¡°Hello¡±¶ó´Â °á°ú°¡ Ãâ·ÂµÈ´Ù.
gcc ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥À» ºôµåÇϰí, PC¿¡¼ °ð¹Ù·Î ½ÇÇà½ÃÄÑ °á°ú¸¦ È®ÀÎÇÏ¿´´Ù. À§¿¡¼ »ý¼ºµÈ hello ÇÁ·Î±×·¥Àº PC¿ë À̹ÌÁöÀ̱⠶§¹®¿¡ ´Ù¸¥ ½Ã½ºÅÛ¿¡¼´Â »ç¿ëÇÒ ¼ö ¾øÀ¸¹Ç·Î ÇØ´ç ½Ã½ºÅÛ¿¡ ¸Â´Â ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇØ ºôµåÇØ ÁÖ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ÀÌ ÇÁ·Î±×·¥À» ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ µ¿ÀÛ½Ã۱â À§Çؼ´Â ´ÙÀ½°ú °°Àº ÀýÂ÷¸¦ °ÅÄ¡°Ô µÈ´Ù.
¡Ü gcc ´ë½Å ÀÓº£µðµå ½Ã½ºÅÛ¿ë ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥ ºôµå
¡Ü »ý¼ºµÈ hello ÇÁ·Î±×·¥ À̹ÌÁö¸¦ Ÿ°ÙÀ¸·Î ´Ù¿î·Îµå
¡Ü Ÿ°Ù¿¡¼ hello ÇÁ·Î±×·¥À» ½ÇÇà
#include <stdio.h>
int main(void) {
printf(¡° Hello ¡±);
return 0; }
# gcc - o hello hello.c
# ./hello
Hello
¡° ÀÓº£µðµå ½Ã½ºÅÛÀº »ç¾çÀÌ ³·¾Æ °³¹ßÀ» Çϱ⿡ ºÎÁ·Çϰųª ½ÉÁö¾î´Â ºÒ°¡´ÉÇÑ °æ¿ì±îÁö Àֱ⠶§¹®¿¡, ¿ÜºÎ ȯ°æ¿¡¼ ÇÁ·Î±×·¥À» °³¹ßÇÏ°í °³¹ßµÈ °á°ú¹°À» ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼
¼öÇàÇÏ´Â ±¸Á¶¸¦ ÀÌ¿ëÇØ °³¹ßÀ» ÇÏ°Ô µÈ´Ù. ÀÌ·¯ÇÑ °³¹ß ±¸Á¶¸¦ ±³Â÷ °³¹ß ȯ°æÀ̶ó°í ÇÑ´Ù.¡±
Ÿ°Ù¿ë ÅøÃ¼ÀÎ ¸¸µé±â
ÀÌÁ¦ºÎÅÍ À§ °úÁ¤À» ¼öÇàÇØ º¸±â À§ÇÑ Å¸°Ù¿ë ÅøÃ¼ÀÎÀ» ¸¸µé¾î º¸±â·Î ÇϰڴÙ.
¸ÕÀú, ÅøÃ¼ÀÎÀ» ¸¸µå´Âµ¥ ÇÊÀÚ°¡ »ç¿ëÇÑ È¯°æÀº ´ÙÀ½°ú °°´Ù.

È£½ºÆ®·Î´Â ¸®´ª½º°¡ ¼³Ä¡µÈ ÆæÆ¼¾öPC¸¦ »ç¿ëÇÏ¿´°í, Ÿ°ÙÀº SMDK2440À̶ó´Â ARM CPU¸¦ »ç¿ë
ÇÑ °³¹ß º¸µå¸¦ ±âÁØÀ¸·Î ÇÏ¿´´Ù. (ARMÀ̶õ ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ ¸¹ÀÌ »ç¿ëµÇ´Â CPU ÁßÀÇ ÇϳªÀÌ´Ù.) È£½ºÆ®°¡ ÆæÆ¼¾ö, Áï x86 °è¿ÀÇ CPU¸¦ »ç¿ëÇÏ´Â ¹Ý¸é, Ÿ°ÙÀº ARM °è¿ÀÇ CPU¸¦ »ç¿ëÇϰí Àֱ⠶§¹®¿¡ È£½ºÆ®¿¡ SMDK2440¿ë °³¹ß ȯ°æÀ» ¸¸µé±â À§Çؼ´Â ARM ¿ë ÅøÃ¼ÀÎÀ» ±¸¼ºÇØ¾ß ÇÑ´Ù.
¿©±â¼´Â crosstool À̶ó´Â ÅøÀ» »ç¿ëÇÏ¿© ÅøÃ¼ÀÎÀ» ±¸¼ºÇØ º¸±â·Î ÇϰڴÙ.
ÅøÃ¼ÀÎÀº gcc, glibc, binutil µîÀÇ ÇÁ·Î±×·¥ÀÌ ÅëÇÕµÈ º¹ÀâÇÑ ±¸Á¶¸¦ °¡Áö°í Àִµ¥, Å©·Î½ºÅøÀº À̸¦
½±°í °£´ÜÇÏ°Ô ¸¸µé¾î ÁÖ´Â ÅøÀÌ´Ù. ¹°·Ð ¿ÀǼҽº·Î µÇ¾î Àֱ⠶§¹®¿¡ ¹«·á·Î »ç¿ë °¡´ÉÇÏ´Ù. Å©·Î½º
ÅøÀÇ °ø½Ä »çÀÌÆ®´Â http://kegel.com/crosstool/ ÀÌ´Ù. ´Ù¿î·Îµå ¹× »ç¿ë¹ý µî Å©·Î½ºÅø »ç¿ë¿¡ ´ëÇÑ
¸ðµç Á¤º¸¸¦ º¼ ¼ö ÀÖ´Ù.
1. ±âº»È¯°æ ¼³Á¤
¾ÕÀ¸·Î °Á¸¦ ÁøÇàÇÏ¸é¼ »ç¿ëÇÒ °èÁ¤°ú µð·ºÅ丮¸¦ ¸ÕÀú ¼³Á¤Çϵµ·Ï ÇϰڴÙ. ¹°·Ð, ´Ù¸¥ °èÁ¤À̳ª µð·ºÅ丮¸¦ »ç¿ëÇØµµ ¹«¹æÇÏÁö¸¸, µû¶ó Çϱ⠽±µµ·Ï Çϱâ À§ÇØ ÆíÀÇ»ó ¼³Á¤ÇÏ¿´´Ù.
°¡. °èÁ¤ »ý¼º
º» °Á¿¡¼´Â¡®oss¡¯¶ó´Â À¯Àú °èÁ¤À» »ç¿ëÇÏ¿© ÁøÇàÇϱâ·Î ÇÑ´Ù. ºÎµæÀÌÇÏ°Ô ·çÆ® °èÁ¤À» »ç¿ëÇØ¾ßÇÏ´Â °æ¿ì¿¡´Â º°µµ·Î ¾ð±ÞÇϵµ·Ï ÇϰڴÙ.
´ÙÀ½°ú °°ÀÌ °èÁ¤À» »ý¼ºÇϰí, »ý¼ºµÈ °èÁ¤À¸·Î ·Î±×ÀÎ ÇÑ´Ù.
# adduser oss
# passwd oss
# su - oss (¶Ç´Â oss °èÁ¤À¸·Î ·Î±×ÀÎ)
³ª. ÀÛ¾÷ µð·ºÅ丮 »ý¼º
oss Ȩ µð·ºÅ丮ÀÇ elinux ¶ó´Â µð·ºÅ丮¿¡¼ ¸ðµç ÀÛ¾÷À» ÁøÇàÇϱâ·Î ÇÑ´Ù.
# mkdir elinux
# cd elinux
# pwd
/home/oss/elinux
´Ù. ÅøÃ¼ÀÎ ¼³Ä¡ µð·ºÅ丮 Áغñ
º» °Á¿¡¼´Â /opt µð·ºÅ丮¸¦ ÅøÃ¼ÀÎÀÌ ¼³Ä¡µÉ µð·ºÅ丮·Î »ç¿ëÇÒ °ÍÀÌ´Ù. À¯Àú °èÁ¤¿¡¼ /opt µð·ºÅ丮ÀÇ ¾²±â ±ÇÇÑÀÌ ¾ø´Â »óÅÂÀ̱⠶§¹®¿¡ ¾²±â ±ÇÇÑÀ» ¼³Á¤ÇÑ´Ù. ÀÌ´Â ·çÆ® °èÁ¤À¸·Î ¼öÇàÇØ¾ß ÇÑ´Ù.
2. Å©·Î½ºÅø ¼³Ä¡
°¡. ´Ù¿î·Îµå
Å©·Î½ºÅø °ø½Ä »çÀÌÆ®¿¡¼ Å©·Î½ºÅøÀ» ´Ù¿î·ÎµåÇÑ´Ù. ¿©±â¼´Â ÃֽйöÀüÀÎ 0.43 ¹öÀüÀ» »ç¿ëÇÑ´Ù. wget ¸í·É¾î¸¦ ÀÌ¿ëÇØ¼ ´Ù¿î·Îµå ¹ÞÀ¸¸é µÇ°í, ¾Æ·¡¿Í °°Àº ¸Þ½ÃÁö°¡ Ãâ·ÂµÈ´Ù.
# wget http://kegel.com/crosstool/crosstool-0.43.tar.gz
oss@jyj0316-linux:~$ wget http://kegel.com/crosstool/crosstool-0.43.tar.gz
--19:24:40-- http://kegel.com/crosstool/crosstool-0.43.tar.gz
=> `crosstool-0.43.tar.gz'
####### 168.219.61.250:8080... ###########
Proxy request sent, awaiting response... 200 OK
Length: 3,047,042 (2.9M) [application/x-tar]
100%[=============================>] 3,047,042 70.67K/s ETA 00:00
19:25:25 (67.87 KB/s) - `crosstool-0.43.tar.gz' saved [3047042/3047042]
oss@jyj0316-linux:~$
´Ù¿î·Îµå°¡ ¿Ï·áµÇ¸é, tar ¸í·É¾î¸¦ ÀÌ¿ëÇÏ¿© ¾ÐÃàµÈ Å©·Î½ºÅø ¼Ò½ºÄÚµåÀÇ ¾ÐÃàÀ» ÇØÁ¦ÇÑ´Ù.
# tar - xzf crosstool-0.43.tar.gz
# cd crosstool-0.43
³ª. ½ºÅ©¸³Æ® ½ÇÇà
Å©·Î½ºÅøÀº ´Ù¾çÇÑ Á¾·ùÀÇ ÅøÃ¼ÀÎ ¹× Ç÷§ÆûÀ» Áö¿øÇÑ´Ù. ÀÌ Áß ARM¿ë ÅøÃ¼ÀÎÀ» ¸¸µé±â À§ÇÑ ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ±×¸®°í SMDK2440¿¡ »ç¿ëµÇ´Â ARM9Àº ½Ç¼ö¿¬»êÀ» Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ softfloat¸¦ ¼±ÅÃÇϱâ·Î ÇÑ´Ù.
# vi demo-arm-softfloat.sh
¡¦
set -ex
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/opt/crosstool
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
¡¦
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh ?notest
¡¦
eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
demo-arm-softfloat.sh ÆÄÀÏÀ» º¸¸é À§¿Í °°ÀÌ ±¸¼ºµÇ¾î ÀÖ´Ù. TARBALL_DIR Àº gcc, glibc µî ÅøÃ¼ÀÎ ±¸¼º¿¡ ÇÊ¿äÇÑ ¼Ò½º¸¦ ´Ù¿î·Îµå ¹ÞÀ» °æ·Î¸¦ ÁöÁ¤Çϰí, RESULT_TOP Àº ÅøÃ¼ÀÎÀÌ ¼³Ä¡µÉ °æ·Î¸¦ ÀǹÌÇÑ´Ù. ÇÊ¿äÇÑ °æ¿ì À§ÀÇ °ªÀ» ¹Ù²Ù¾î ÁÖ¸é µÈ´Ù.
±×¸®°í, eval ·Î ½ÃÀÛÇÏ´Â ¶óÀÎÀÌ ¿©·¯ °³ ÀÖ°í, 1°³¸¦ Á¦¿ÜÇÑ ¸ðµç ¶óÀÎÀÌ #À¸·Î ÁÖ¼® 󸮵Ǿî ÀÖÀ½À» º¼ ¼ö ÀÖ´Ù. »ç¿ëÇÒ gcc¿Í glibcÀÇ ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. µðÆúÆ® °ªÀ¸·Î ¿ì¸®´Â gcc 3.4.5 ¿Í glibc 2.3.6 ¹öÀüÀ» »ç¿ëÇϱâ·Î ÇÑ´Ù. ´Ù¸¥ ¹öÀüÀÇ ÅøÃ¼ÀÎÀ» ¸¸µé°í ½ÍÀº °æ¿ì ÀÌ ºÎºÐÀ» º¯°æÇØ ÁÖ¸é µÈ´Ù.
¿©±â¼´Â °ªÀ» º¯°æÇÏÁö ¾ÊÀº ä·Î ºôµå¸¦ ¼öÇàÇϱâ·Î ÇÑ´Ù
±×¸®°í ´ÙÀ½ ÆÄÀÏÀ» ¼öÁ¤ÇÑ´Ù.
# vi arm-softfloat.dat
¡¦
TARGET=arm-linux
¡¦
arm-softfloat.dat ÆÄÀÏÀÇ TARGET Ç׸ñÀº ÅøÃ¼ÀÎ ¼³Ä¡½Ã prefix¸¦ ÁöÁ¤ÇÑ´Ù. À̸¦ arm-linux ¶ó°í ¼³Á¤ÇÏ°Ô µÇ¸é ÅøÃ¼ÀÎÀÇ gcc ¹× binutil ¿¡ prefix °¡ ºÙ¾î arm-linux-gcc ¿Í °°Àº À̸§À¸·Î ¸¸µé¾îÁö°í, ÀÌ prefix·Î È£½ºÆ®ÀÇ gcc¿Í ±¸ºÐÀÌ µÈ´Ù.
# sh demo-arm-softfloat.sh
À§¿Í °°ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ°Ô µÇ¸é, binutil. gcc, glibc µî ÅøÃ¼ÀÎ ±¸¼º¿¡ ÇÊ¿äÇÑ ¿ä¼ÒµéÀ» ÇØ´ç »çÀÌÆ®·ÎºÎÅÍ ´Ù¿î·Îµå ¹Þ°Ô µÇ°í, ÀÌÈÄ ºôµå, ¼³Ä¡ °úÁ¤ÀÌ ÀÚµ¿À¸·Î ÀÌ·ç¾îÁö°Ô µÈ´Ù. ½Ã°£ÀÌ ²Ï °É¸®´Â ÀÛ¾÷ÀÌ´Ù. (½Ã½ºÅÛ »ç¾ç°ú ³×Æ®¿÷ ¼Óµµ¿¡ µû¶ó ´Ù¸£Áö¸¸ º¸Åë 30ºÐ ~ 2½Ã°£ °¡·® ¼Ò¿äµÈ´Ù.)
ºôµå°¡ ¼º°øÀûÀ¸·Î ¿Ï·áµÇ¸é, /opt/crosstool µð·ºÅ丮¿¡ ÅøÃ¼ÀÎÀÌ ¼³Ä¡µÇ¾úÀ½À» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
# ls /opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux
ÅøÃ¼ÀÎ ºôµå°¡ ¿Ï·áµÇ¾úÀ¸¸é ¾Õ¼ ¸¸µç hello ÇÁ·Î±×·¥À» ºôµåÇØ º¸±â·Î ÇÏÀÚ.
À̸¦ »ç¿ëÇϱâ À§ÇØ ¸ÕÀú ÅøÃ¼ÀÎ ½ÇÇàÆÄÀÏÀ» PATH¿¡ µî·ÏÇØ ÁØ´Ù.
# vi ~/.bashrc
¡¦
export PATH=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:$PATH
oss °èÁ¤ÀÇ È¯°æº¯¼ö¸¦ ¼³Á¤ÇÏ´Â .bashrc ÆÄÀÏÀÇ ¸Ç ¸¶Áö¸· ÁÙ¿¡ À§¿Í °°Àº ¶óÀÎÀ» Ãß°¡ÇÑ´Ù. À̶§ µÞºÎºÐÀÇ :$PATH ¿¡ ƯÈ÷ ÁÖÀÇÇÏ¿© ÀÔ·ÂÇϵµ·Ï ÇÑ´Ù. À߸ø ÀÔ·ÂÇÏ´Â °æ¿ì ±âÁ¸ÀÇ PATH Á¤º¸°¡ Áö¿öÁú ¿°·Á°¡ Àֱ⠶§¹®ÀÌ´Ù.
¸¶Áö¸·À¸·Î source ¸í·ÉÀ¸·Î º¯°æµÈ ³»¿ëÀ» ÇöÀç Å͹̳ο¡ ¹Ý¿µÇØÁØ´Ù.
# source ~/.bashrc
ÀÌÁ¦, ÅøÃ¼ÀÎÀ» »ç¿ëÇϱâ À§ÇÑ ¸ðµç °úÁ¤ÀÌ ¿Ï·áµÇ¾ú´Ù. ÀÌÁ¦ hello.c ÇÁ·Î±×·¥À» ºôµåÇØ º¸±â·Î ÇÏÀÚ.
# arm-linux-gcc - o hello hello.c
# ./hello
-su: ./hello: cannot execute binary file
ºôµå´Â ¼º°øÀûÀ¸·Î ¿Ï·á°¡ µÇ¾úÁö¸¸, ½ÇÇàÇØ º¸¸é ½ÇÇàÇÒ ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö°¡ Ãâ·ÂµÈ´Ù. x86ÀÌ ¾Æ´Ñ ARM¿ë À̹ÌÁö·Î ¸¸µé¾î Á³±â ¶§¹®ÀÌ´Ù. ÆÄÀÏ Á¤º¸¸¦ º¸´Â file ¸í·É¾î·Î hello À̹ÌÁö¸¦ È®ÀÎÇØ º¸¸é ¾Æ·¡¿Í °°ÀÌ ARM¿ëÀ¸·Î ºôµåµÈ À̹ÌÁö¶ó´Â Á¤º¸°¡ Ãâ·ÂµÈ´Ù.
# file hello
hello: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.4.3, dynamically
linked (uses shared libs), not stripped
ÈÄ¿¡ ÀÓº£µðµå ½Ã½ºÅÛ¿¡¼ ¸®´ª½º¸¦ ±¸µ¿½ÃŲ ÈÄ hello À̹ÌÁö¸¦ ½ÇÇàÇØ º¸¸é Á¦´ë·Î ½ÇÇàµÊÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Áö±Ý±îÁö ±³Â÷ °³¹ß ȯ°æ¿¡ ´ëÇØ¼ ¾Ë¾Æº¸¾Ò°í, Å©·Î½º ÅøÀ̶ó´Â ¿ÀÇ ¼Ò½º¸¦ ÀÌ¿ëÇÏ¿© ÅøÃ¼ÀÎÀ» Á÷Á¢ ¸¸µé¾î º¸¾Ò´Ù. °³¹ß ȯ°æÀ» ±¸ÃàÇÏ´Â ÀÛ¾÷Àº ÀÓº£µðµå ¸®´ª½º¸¦ »ç¿ëÇÏ´Â µ¥ ÀÖ¾î °¡Àå ±â¹ÝÀÌ µÇ´Â °úÁ¤ÀÌ´Ù. À̸¦ ÀÌ¿ëÇÏ¿© ¾ÕÀ¸·Î »ç¿ëÇÒ ºÎÆ®·Î´õ, Ä¿³ÎÀ» ºñ·ÔÇÑ ¸ðµç ÇÁ·Î±×·¥À» ºôµåÇÒ °ÍÀ̱⠶§¹®ÀÌ´Ù. ´ÙÀ½ ½Ã°£¿¡´Â ºÎÆ®·Î´õ¿¡ ´ëÇØ ¾Ë¾Æº¸°í Ÿ°ÙÀÇ È¯°æ ¼³Á¤¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
Ãâó : °ø°³ SW ¸®Æ÷Æ® 8È£ ÆäÀÌÁö 48 ~ 53 ¹ßÃé(2007³â 8¿ù) - Çѱ¹¼ÒÇÁÆ®¿þ¾î ÁøÈï¿ø °ø°³SW»ç¾÷ÆÀ ¹ß°£