[OS]/Embedded

[펌] ARM 용 최신 크로스 컴파일러 제작(2/2) Update

하늘을닮은호수M 2005. 6. 16. 13:29
반응형

ARM 용 최신 크로스 컴파일러 제작

글쓴이 : nanuix (2004년 11월 15일 오후 09:51)

========================================================
"ARM 용 최신 크로스컴파일러 Update"
2004/ 11/ 08
NaNu9 in Null@Root nanuix at null2root.org
========================================================

ARM용 최신 크로스컴파일러 제작은 한번 해보셨는지.. 그사이에 벌써 gcc-3.4.3.tar.bz2가 Release 되었네요.
만들수 있는 능력과 스스로 업그레이드를 해나갈수 있으면 크로스컴파일러 문제는 완전히 독립하는것 아니겠어요.
ARM용 최신 크로스컴파일러 제작은 해보신것으로 알고 이번에 Update된 Gcc로 크로스컴파일러로 Update 해보겠습니다.

먼저 환경설정은 이전부분과 동일합니다.

그러면 먼저 소스를 다운 받고 압축을 풀고 작업을 시작합니다.
참고로 작업하는 위치는 여기 입니다.

$ pwd
/home/xels/src

$ wget ftp://ftp.gnu.org/gnu/gcc/gcc-3.4.3/gcc-3.4.3.tar.bz2 또는
$ wget ftp://sources.redhat.com/pub/gcc/releases/gcc-3.4.3/gcc-3.4.3.tar.bz2

$ tar -xjf gcc-3.4.3.tar.bz2
$ cd gcc-3.4.3

크로스컴파일러를 업데이트 하기전에, 리눅스의 컴파일러를 먼저 업데이트 합니다.

$ mkdir x86; cd x86

gcc 버전이 어떻게 되어있는지 확인을 합니다.

$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.2/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --disable-libunwind-exceptions --with-system-zlib --enable-__cxa_atexit
Thread model: posix
gcc version 3.4.2

gcc -v 라는 명령을 주면 컴파일된 조건과 버전이 출력됩니다. 이전에 컴파일된 조건으로 업데이트를 합니다.

$ ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --disable-libunwind-exceptions --with-system-zlib --enable-__cxa_atexit
creating cache ./config.cache
....
$ make
$ su
Password:
# make install

# gcc -v
Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --disable-libunwind-exceptions --with-system-zlib --enable-__cxa_atexit
Thread model: posix
gcc version 3.4.3

새로운 버전으로 업데이트가 성공했다는 메시지가 나오는 군요.

# rm -rf * <-- 작업한것들을 다 지웁니다.
<주의> root 권한이기때문에 다른 디렉으로 가서 이 명령을 사용하면 큰일납니다.
# exit
exit

다음은 크로스컴파일러를 업데이트 할 차례죠.

$ cd ..
$ pwd
/home/xels/src/gcc-3.4.3

작업할 디렉을 만들어서 자리를 옮깁니다.

$ mkdir pxa;cd pxa

현재 크로스컴파일러의 버전과 컴파일조건을 출력해봅니다.

$ arm-linux-gcc -v
Reading specs from /home/xels/usr/lib/gcc/arm-linux/3.4.2/specs
Configured with: ../configure --target=arm-linux --prefix=/home/xels/usr --exec-prefix=/home/xels/usr --with-headers=/home/xels/usr/include --libdir=/home/xels/usr/lib
Thread model: posix
gcc version 3.4.2

이전에 컴파일된 조건으로 업데이트를 합니다.

$ ../configure --target=arm-linux --prefix=/home/xels/usr --exec-prefix=/home/xels/usr --with-headers=/home/xels/usr/include --libdir=/home/xels/usr/lib

$ make && make install

Error 메시지 없이 성공적으로 끝났군요.
확인을 한번 해볼까요

$ arm-linux-gcc -v
Reading specs from /home/xels/usr/lib/gcc/arm-linux/3.4.3/specs
Configured with: ../configure --target=arm-linux --prefix=/home/xels/usr --exec-prefix=/home/xels/usr --with-headers=/home/xels/usr/include --libdir=/home/xels/usr/lib
Thread model: posix
gcc version 3.4.3

$ cd ../../
$ rm -rf gcc-3.4.3 <-- 마무리 정리를 해줍니다.

개인적인 생각으로
크로스컴파일러를 직접 만들어보면 배우는 점도 많이 있습니다만
불필요한 시간을 끝없이 보내는 경우도 있는것 같습니다.

서투른 목수가 연장 탓만 한다고 했던가요..

이로써 누군가가 크로스컴파일러를 만들어 주기만 기다리지 않아도 최신의 Tools로 좋은 결과가 많이 나오고.. 참고자료로 더 많이 올라와서... GNU 프로젝트가 활성화 되기를 바랍니다.

반응형