¿ì¼± Å©·Î½º ÄÄÆÄÀÏ·¯¸¦ ¸¸µé¾îº¸ÀÚ. root·Î ½ÃÀÛÇÏ´Â °ÍÀÌ ÁÁ°Ú´Ù. ȤÀº Àû¾îµµ ¼³Ä¡ÇÒ ¶©
root·Î ÇÒ Çʿ䰡 ÀÖ´Ù. binutils¿Í gcc¸¦ ´ÙÀ½ »çÀÌÆ®¿¡¼ ´Ù¿î ¹Þ´Â´Ù.
ÀÎÅÚ SA1100 Assabet º¸µå¿¡ °üÇÑ ¸®´ª½º °³¹ß »çÀÌÆ®¸¦ ÂüÁ¶ÇÏ¸é º¸´Ù ÀÚ¼¼ÇÑ »çÇ×À» ¾Ë ¼ö ÀÖ´Ù.
ÀÎÅÚ »çÀÌÆ®.
¹ÞÀº ÆÄÀÏÀÌ /devel/arm/assabet¿¡ µé¾ú´Ù°í °¡Á¤ÇÏ°í ±× µð·ºÅ丮¿¡¼ ´ÙÀ½°ú °°Àº ÀýÂ÷¸¦ »ç¿ëÇØ
ÄÄÆÄÀÏ·¯¸¦ ¸¸µç´Ù.
binutils
%cd /devel/arm/assabet
%tar xzf binutils-2.11.2.tar.gz
%cd binutils-2.11.2
%./configure --target=arm-linux --prefix=/usr/local/arm
%make
%make install |
configureÇÒ ¶§ÀÇ --targetÀº ¸¸µé¾îÁú binutils°¡ arm-linux¿ëÀ̶õ °ÍÀ» ³ªÅ¸³»°í,
--prefix´Â ¸¸µé¾îÁø binutils°¡ ¼³Ä¡µÉ µð·ºÅ丮¸¦ ³ªÅ¸³½´Ù.
¼³Ä¡µÈ µð·ºÅ丮ÀÇ ¸®½ºÆ®´Â ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.
drwxr-xr-x 4 root root 16 2¿ù 26 09:58 arm-linux
drwxr-xr-x 2 root root 4096 2¿ù 26 09:58 bin
drwxr-xr-x 2 root root 48 2¿ù 26 09:58 include
drwxr-xr-x 2 root root 4096 2¿ù 26 09:58 lib
drwxr-xr-x 3 root root 8 2¿ù 26 09:58 man
drwxr-xr-x 2 root root 1 2¿ù 26 09:58 share |
Á¤»óÀûÀ¸·Î ¸¸µé¾î Á³À¸¸é ´ÙÀ½ ÀýÂ÷¿¡¼ »ç¿ëµÇ°Ô Çϱâ À§ÇØ path¿¡ Àӽ÷ΠÃß°¡ÇØ ÁØ´Ù.
bash¸¦ »ç¿ëÇÑ´Ù°í °¡Á¤Çß´Ù.
export PATH=/usr/local/arm/bin:$PATH |
gcc
gcc¸¦ ¸¸µé±â À§Çؼ± ¸®´ª½º Ä¿³ÎÀÇ Çì´õ ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù.
¿ì¼± Ä¿³Î ¼Ò½º¸¦ Ç®°í 2°³ÀÇ µð·ºÅ丮¸¦ ¸µÅ©ÇØ ÁØ´Ù. »ç¿ëµÈ Ä¿³ÎÀº ¿øÇÏ´Â ¹öÀüÀ» ¹Þ¾Æ
»ç¿ëÇϱ⠹ٶõ´Ù. ¿©±â¼± 2.4.17À» »ç¿ëÇß´Ù.
%cd /devel/arm/assabet
%tar xvjf linux-2.4.17.tar.bz2
%mv linux linux-2.4.17
%cd /usr/local/arm/arm-linux
%mkdir include
%cd include
%ln -s /devel/arm/assabet/linux-2.4.17/include/asm-arm asm
%ln -s /devel/arm/assabet/linux-2.4.17/include/linux linux
%ls asm
%ls linux
%cd /devel/arm/assabet
%tar xzf gcc-2.95.3.tar.gz
%cd gcc-2.95.3
%./configure --target=arm-linux --prefix=/usr/local/arm
%make LANGUAGES="c" |
make¸¦ ÁøÇàÇÏ´Â Áß¿¡ stdlib.h, unistd.h¿Í °°Àº ¸î °³ÀÇ ÆÄÀÏÀÌ ¾ø´Ù°í ¿¡·¯°¡ ³¯ °ÍÀÌ´Ù.
ARM ¸®´ª½º »çÀÌÆ®¿¡¼ ¾òÀº Á¤º¸¿¡ ÀÇÇϸé, gcc/config/arm/t-linux¶õ ÆÄÀÏÀ» ¼öÁ¤Ç϶ó°í
µÇ¾îÀÖ´Ù.¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´Ù.
%cd gcc/config/arm
%vi t-linux |
Á¦ÀÏ À§¿¡ ÀÖ´Â ÁÙÀ» ã¾Æº¸¸é 'TARGET_LIBGCC2_CFLAGS='¶õ ÁÙÀÌ ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ ÁÙÀÇ ³¡¿¡ '-Dinhibit_libc -D__gthr_posix_h'¸¦ Ãß°¡ÇØ ÁØ´Ù.
±×¸®°í configure¸¦ ½ÇÇàÇÒ ¶§ --disable-threads¸¦ Ãß°¡ÇØ ÁÖ°í ´Ù½Ã configure°ú make¸¦
½ÇÇàÇÑ´Ù.
%./configure --target=arm-linux --prefix=/usr/local/arm --disable-threads
%make LANGUAGES="c" |
ÄÄÆÄÀÏ ÈÄ ¿¡·¯°¡ ³ª´Â °Í ó·³ º¸ÀÌÁö¸¸ ¿¡·¯ ³ªµµ ÇÊ¿äÇÑ ÆÄÀÏÀº ¸¸µé¾îÁ³À¸¹Ç·Î
¾Æ·¡ ¸í·ÉÀ¸·Î È®ÀÎ ÇÑ´Ù. ¸¸¾à gcc/xgcc°¡ ¾ø´Ù¸é make°¡ Á¦´ë·Î µÇÁö ¾ÊÀº °ÍÀÌ´Ù.
¾Æ·¡ ¸í·ÉÀÇ Ãâ·ÂÀº 'arm-linux'°¡µÈ´Ù.
%./gcc/xgcc -dumpmachine
arm-linux |
À§¿Í °°ÀÌ Ãâ·ÂµÈ´Ù¸é Á¦´ë·Î µÈ °ÍÀ̹ǷΠÀνºÅçÇÑ´Ù.
%make LANGUAGES="c" install |
glibc¸¦ ¸¸µå´Â ÀýÂ÷¿¡¼± Ä¿³ÎÀÇ version.h°¡ ÇÊ¿äÇÏ´Ù.
version.h´Â make dep¸¦ ÇÏ¸é »ý¼ºµÈ´Ù.
%cd /devel/arm/assabet
%cd linux-2.4.17
%zcat ../patch-2.4.17-rmk5.gz | patch -p1 |
patch±îÁö Àû¿ëÇÏ°í ³ª¼ MakefileÀ» ¼öÁ¤ÇÑ´Ù. /devel/arm/assabet/linux-2.4.17/MakefileÀ»
¿¾î 'ARCH := arm'À¸·Î ¼öÁ¤Çϰí 'CROSS_COMPILE =/usr/local/arm/bin/arm-linux-'À¸·Î ¼öÁ¤ÇÑ´Ù.
%make assabet_config
%make config |
±×³É enter¸¸ Ãļ ÀÏ´Ü default settingÀ¸·Î ÀúÀåÇÑ´Ù.
%make dep
%find -name "version.h" |
version.h°¡ include/linux¿¡ ¾ø´Ù¸é ¿¡·¯!
glibc°¡ ¼³Ä¡µÉ µð·ºÅ丮¸¦ ¸¸µé¾î ÁØ´Ù.
%mkdir /usr/local/arm/glibc
%mkdir /usr/local/arm/glibc/arm-linux-glibc
%cd /devel/arm/assabet
%tar xzf glibc-2.1.3.tar.gz
%cd glibc-2.1.3
%tar xzf ../glibc-linuxthreads-2.1.3.tar.gz
%tar xzf ../glibc-crypt-2.1.tar.gz
%CC=arm-linux-gcc ./configure arm-linux --build=i686-pc-linux-gnu \
--prefix=/usr/local/arm/glibc/arm-linux-glibc --enable-add-ons \
--with-headers=/devel/arm/assabet/linux-2.4.17/include
%make
%make install |
¼Óµµ°¡ ´À¸° È£½ºÆ®¸¦ »ç¿ëÇÑ´Ù¸é ¾Æ¸¶µµ Áý¿¡ Åð±ÙÇϱâ Àü¿¡ make ½ÇÇàÇØ ³õ°í Áý¿¡ °¬´Ù ¿À¸é
¿¡·¯°¡ ³ª ÀÖ´øÁö Á¦´ë·Î ÄÄÆÄÀÏÀÌ µÇ¾î ÀÖ´øÁö ÇÒ °ÍÀÌ´Ù. Àü¿¡ P-II 400MHz¿¡¼ ¾à 1½Ã°£ °É¸°
±â¾ïÀÌ ÀÖ´Ù. ÇöÀç Athlon 1GHz¿¡¼ ¾à 10ºÐ °É¸°°Í °°´Ù.
c++
c++ ÄÄÆÄÀÏ·¯µµ ¸¸µé¾îº¸ÀÚ.
%cd /devel/arm/assabet
%cd gcc-2.95.3
%./configure --host=i686-pc-linux-gnu --target=arm-linux \
--prefix=/usr/local/arm \
--with-headers=/usr/local/arm/glibc/arm-linux-glibc/include \
--with-libs=/usr/local/arm/glibc/arm-linux-glibc/lib
%make LANGUAGES="c c++"
%make LANGUAGES="c c++" install |
Å×½ºÆ®
´Ù ¸¸µé¾îÁø ÄÄÆÄÀÏ·¯, ¶óÀ̺귯¸®¸¦ Å×½ºÆ® ÇØº»´Ù. Å×½ºÆ® Àü¿¡ /usr/local/arm/binÀÌ
ÆÐ½º¿¡ ¼³Á¤µÆ´ÂÁö È®ÀÎ. ¾ø´Ù¸é ³Ö¾î Áְųª ¾Æ·¡ compiler ¸í·É¿¡¼ Àû´çÈ÷ path¸¦ »ðÀÔÇØ ÁÙ°Í.
%cat > hello.c
/*
* hello.c
*/
#include <stdio.h>
int main()
{
printf("hello.\n");
return 0;
}
%arm-linux-gcc -o hello hello.c |
¿¡·¯ ¾øÀÌ ÄÄÆÄÀϵǰí hello°¡ ¸¸µé¾îÁ³´ÂÁö È®ÀÎÇÒ °Í.
±×¸®°í file ¸í·ÉÀ¸·Î ¸¸µé¾îÁø hello°¡ ¾î¶² ³»¿ëÀÎÁö È®ÀÎÇØ º»´Ù.
¾Æ·¡ ó·³ ELFÀ̰í ARM¿ëÀ̸é OK.
%file hello
hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped |
¿©±â±îÁö ÅøÃ¼ÀÎÀ» ¸¸µé¾î ºÃ´Ù. Ä¿³ÎÀÌ Àß µ¹¾Æ°£´Ù¸é ¸¸µç ÅøÃ¼ÀÎÀº Àß µ¿ÀÛÇÑ´Ù°í ºÁµµ µÉ°ÍÀÌ´Ù.