Daniel J Song's page

prev April 2018 next
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
2930     

S E A R C H

A R C H I V E S
June 2003
July 2003
August 2003
September 2003
October 2003
November 2003
December 2003
January 2004
February 2004
March 2004
April 2004
May 2004
June 2004
July 2004
August 2004
September 2004
October 2004
November 2004
December 2004
January 2005
February 2005
March 2005
April 2005
May 2005
June 2005
July 2005
August 2005
September 2005
October 2005
November 2005
December 2005
January 2006
February 2006
March 2006
April 2006
May 2006
June 2006
July 2006
August 2006
September 2006
October 2006
November 2006
December 2006
January 2007
February 2007
March 2007
April 2007
May 2007
June 2007
July 2007
August 2007
September 2007
October 2007
November 2007
December 2007
January 2008
February 2008
March 2008
April 2008
May 2008
June 2008
July 2008
August 2008
September 2008
October 2008
November 2008
December 2008
January 2009
February 2009
March 2009
April 2009
May 2009
June 2009
July 2009
August 2009
September 2009
October 2009
November 2009
December 2009
January 2010
February 2010
March 2010
April 2010
May 2010
June 2010
July 2010
August 2010
September 2010
October 2010
November 2010
December 2010
January 2011
February 2011
March 2011
April 2011
May 2011
June 2011
July 2011
August 2011
September 2011
October 2011
November 2011
December 2011
January 2012
February 2012
March 2012
April 2012
May 2012
June 2012
July 2012
August 2012
September 2012
October 2012
November 2012
December 2012
January 2013
February 2013
March 2013
April 2013
May 2013
June 2013
July 2013
August 2013
September 2013
October 2013
November 2013
December 2013
January 2014
February 2014
March 2014
April 2014
May 2014
June 2014
July 2014
August 2014
September 2014
October 2014
November 2014
December 2014
January 2015
February 2015
March 2015
April 2015
May 2015
June 2015
July 2015
August 2015
September 2015
October 2015
November 2015
December 2015
January 2016
February 2016
March 2016
April 2016
May 2016
June 2016
July 2016
August 2016
September 2016
October 2016
November 2016
December 2016
January 2017
February 2017
March 2017
April 2017
May 2017
June 2017
July 2017
August 2017
September 2017
October 2017
November 2017
December 2017
January 2018
February 2018
March 2018
April 2018

G O T O

L O G I N

XScaleCrossToolsInstall 

Category: Stuffs, EmbeddedLinux,

  1. 1. 개요
  2. 2. 무엇을 구하는가?
  3. 3. 어디서 구하는가?
  4. 4. 설치 전 작업
  5. 5. 설치 전 주의 사항
  6. 6. 패치 화일 설치
  7. 7. GDB 패케지 설치
  8. 8. Binutils 패케지 설치
  9. 9. 커널 소스 설치 또는 설치 점검 및 처리 내용
  10. 10. gcc 패케지 설치
  11. 11. glibc 패케지 설치
  12. 12. gcc 재설치
  13. 13. 시험

원문 http://www.falinux.com/win/02_config/010_XScaleToolChain/index.htm

1. 개요  

이 문서는 XScale 용 개발 환경인 크로스 툴 체인을 소스 패케지로 만드는 것에 대한 문서입니다..

이 문서는 EZ-X5를 위한 XScale 용 크로스 컴파일 환경을 구축하기 위한 방법중 RPM을 이용하는 방식이 아닌 GNU에서 제공하는 소스 패케지를 이용하여 구성하는 방식에 대하여 기술한 문서입니다

이 문서에 의해서 구축된 크로스 컴파일러는 대부분의 arm 기반 프로세스를 지원합니다.

2. 무엇을 구하는가?  

리눅스를 이용한 개발환경으로 선택했다면 크로스 컴파일 환경을 구축하여야 합니다.

이 크로스 컴파일 환경에 포함되는 것은 다음과 같은 패케지가 필요로 하고 이 패케지들의 모음을 일반적으로 크로스 컴파일 툴 체인이라고도 합니다.

1) binutils : 어셈블러 및 로더 기타 툴 ( GNU ) 2) glibc : 크로스 컴파일 구축을 위한 라이브러리 및 일반 라이브러리 3) gcc : 컴파일러 ( 시그너스 ) 4) 커널 : 커널 쏘스 5) gdb : 디버거

이 문서는 ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/Oerlikon-DevKit-XScalev2.tar.gz 에서 제공되는 문서를 기반으로 만들어 졌읍니다.

3. 어디서 구하는가?  

가장 간단한 방법은 본 홈페이지 에서 구하는 방법입니다.

왜? 본강사가 이글을 쓴 후에 다운 받을수 있게 할것이기 때문이지요. ( 보드 판매 시점 부터)

원론적인 방법은 다음에서 구하는 것입니다.

이 문서는 이곳에서 구하는 것을 참고 할것입니다.

1) binutils : 어셈블러 및 로더 기타 툴 ( GNU )

구할수 있는 곳 과 파일

http://www.ibiblio.org/pub/Linux/kernel.org/pub/linux/devel/binutils/binutils-2.13.90.0.16.tar.gz

2) glibc : 크로스 컴파일 구축을 위한 라이브러리 및 일반 라이브러리

구할수 있는 곳 과 파일

ftp://ftp.gnu.org/gnu/glibc/glibc-2.3.1.tar.gz

ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.1.tar.gz

3) gcc : 컴파일러 ( 시그너스 )

구할수 있는 곳 과 파일

ftp://ftp.gnu.org/gnu/gcc/gcc-3.2.1.tar.gz

4) 커널 : 커널 쏘스

이 부분은 커널 소스 구하기를 참조 할것

5) gdb : 디버거

구할수 있는 곳 과 파일

http://pluto.cdpa.nsysu.edu.tw/sourceware/gdb/releases/gdb-5.3.tar.gz

6) 패치 화일

구할수 있는 곳 과 파일

ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/Oerlikon-DevKit-XScalev2.tar.gz

4. 설치 전 작업  

다운 받은 화일 목록을 정리하면

1) binutils-2.13.90.0.16.tar.gz
2) diff-2.4.19-rmk7-pxa3.gz
2-1) patch-2.4.19-rmk7.gz 
2-2) linux-2.4.19.tar.gz
3) gcc-3.2.1.tar.gz
4) glibc-2.3.1.tar.gz
5) glibc-linuxthreads-2.3.1.tar.gz 
6) gdb-5.3.tar.gz
7) Oerlikon-DevKit-XScalev2.tar.gz

등 총 9개가 됩니다.

설치하려고 하는 리눅스 머신에 다음 디렉토리를 만듭니다.

mkdir -p /var/download/

( 이것은 본강사가 사용하기 위하여 편의상 한것이지 절대적인것은 아니므로 여러분은 각자 적당한 디렉토리명을 선택하면 됩니다.)

/var/download/ 에 다운 받은 화일을 가져다 놓습니다.

5. 설치 전 주의 사항  

이제부터 진행하는 순서는 꼭! 지켜야 합니다.

이유는 각 설치되는 패케지들의 의존 관계가 있기 때문입니다.

설치는 root 권한으로 하시기 바랍니다

일단 현재 보여드리는 /var/download의 디렉토리는 모습은 다음과 같습니다.

여기서 linux 디렉토리는 Xscale(PXA255) 용으로 패치된 리눅스 커널 디렉토리 입니다. 이 부분은 자신에게 맞는 arm 커널을 구하셔서 설치 하십시오

6. 패치 화일 설치  

기존의 툴체인에는 arm에 관련된 몇가지 버그 들이 있읍니다. 이 버그에 대한 패치 화일을 먼저 구하셔야 합니다.

다운로드된 화일중

Oerlikon-DevKit-XScalev2.tar.gz

를 풀면 관련 패치 화일과 자동화 스크립트가 있읍니다.

이 문서도 이 자동화 스크립트의 내용을 보고 참조 한 것입니다.

다음과 같이 수행하여 패치 화일을 /var/download/ 디렉토리에 옮겨 놓습니다.

root@armpro download# tar zxvf Oerlikon-DevKit-XScalev2.tar.gz 
Oerlikon-DevKit-v2/
Oerlikon-DevKit-v2/INSTALL
Oerlikon-DevKit-v2/binutils-2.13.90.0.16-oerlikon.patch
Oerlikon-DevKit-v2/gcc-3.2.1-oerlikon.patch
Oerlikon-DevKit-v2/build-Oerlikon-DevKit-v2.sh
root@armpro download# cd Oerlikon-DevKit-v2/
root@armpro Oerlikon-DevKit-v2# cp binutils-2.13.90.0.16-oerlikon.patch ../
root@armpro Oerlikon-DevKit-v2# cp gcc-3.2.1-oerlikon.patch ../
root@armpro Oerlikon-DevKit-v2# cd ..
root@armpro download# 

7. GDB 패케지 설치  

GDB는 크로스 컴파일 툴체인의 순서와 상관없이 언제든지 설치가 가능합니다.

다음과 같이 설치하면 됩니다.

root@armpro download# tar zxvf gdb-5.3.tar.gz

이 명령을 수행하면 gdb-5.3 란 디렉토리가 생깁니다.

root@armpro download# cd gdb-5.3
root@armpro gdb-5.3# ./configure --target=arm-linux --build=i686-pc-linux-gnu --prefix=/usr
root@armpro gdb-5.3# make
root@armpro gdb-5.3# make install

아마도 별 에러 없이 끝날 것 입니다.

제대로 설치되었다면 다음과 같은 명령을 치면 아래와 같이 나열됩니다.

8. Binutils 패케지 설치  

본강사가 하는대로 그냥 따라만 해도 별무리 없이 설치 될 것입니다.

root@armpro /# cd /var/download/
root@armpro download# tar zxvf binutils-2.13.90.0.16.tar.gz 
root@armpro download# patch -p1 < binutils-2.13.90.0.16-oerlikon.patch
root@armpro download# cd binutils-2.13.90.0.16
root@armpro binutils-2.13.90.0.16# ./configure --target=arm-linux --prefix=/usr --with-cpu=xscale --nfp
root@armpro binutils-2.13.90.0.16# make
root@armpro binutils-2.13.90.0.16# make install

아마도 별 무리없이 끝났을 것입니다.

이 부분을 수행하고 나면 /usr/arm-linux 란 디렉토리가 생성됩니다.

대부분의 실행화일은 /usr/bin에 복사 됩니다.

실행화일명은 앞에 arm-linux- 붙습니다.

9. 커널 소스 설치 또는 설치 점검 및 처리 내용  

커널 소스를 Binutils 패케지 다음에 설치하는 이유는 헤더 화일 때문입니다.

크로스 컴파일 설치 목적이 암용 이라면 커널 소스는 암 패치까지 수행되어야 합니다.

여기서 설명하는 것은 XScale 용이기 때문에 XScale패치까지는 수행되어진 소스여야 됩니다

이에 대한 문서는 다른 문서를 참조하기 바랍니다.

꼭 이 커널 소스를 설치한 후에 진행하여야 합니다.

이 문서에서는

/var/download/linux/

에 설치되어 있는 것으로 설명합니다.

root@armpro /# cd /var/download/linux
root@armpro /# make menuconfig 
시스템을 pxa255 용으로 설정한다 ( pxa250 옵션을 선택하면 됩니다. )

10. gcc 패케지 설치  

이제 실제 크로스 컴파일러를 만듭니다.

root@armpro /# cd /var/download/
root@armpro download# tar zxvf gcc-3.2.1.tar.gz

패치를 가합니다.

root@armpro download# patch -p1 < gcc-3.2.1-oerlikon.patch

몇가지 화일을 수정합니다.

root@armpro download# cd gcc-3.2.1
root@armpro gcc-3.2.1# perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc -D__gthr_posix_h/' gcc/config/arm/t-linux
root@armpro gcc-3.2.1# echo 'T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h' >> gcc/config/arm/t-linux
이것은 실제로 다음과 같이 화일을 직접 고치는 것과 동일 한 것입니다.

=====집기를 사용했을때======================================================================

root@armpro gcc-3.2.1# cd gcc/config/arm/
root@armpro arm# vi t-linux 

t-linux 화일을 수정합니다.

root@armpro gcc-3.2# cd gcc/config/arm/ root@armpro arm# vi t-linux

t-linux 의 선두에 보면

TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC 이란 내용이 있는데 이것을 TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h 으로 바꿔줍니다.

다음을 추가 합니다.

T_CFLAGS = -Dinhibit_libc -D__gthr_posix_h

root@armpro arm# cd /var/download/gcc-3.2.1

=====집기를 사용했을때======================================================================

이제 환경 설정과 컴파일을 수행합니다.

root@armpro gcc-3.2.1# ./configure --target=arm-linux --prefix=/usr --with-headers=/var/download/linux/include --disable-shared --disable-threads --enable-languages="c" --nfp --with-cpu=xscale --without-fp --with-softfloat-support=internal

root@armpro gcc-3.2.1# make root@armpro gcc-3.2.1# make install

인스톨까지 정상적으로 수행 되었습니다.

확인을 위해서 다음과 같이 수행해 봅니다.

11. glibc 패케지 설치  

root@armpro /# cd /var/download/
root@armpro download# tar zxvf glibc-2.3.1.tar.gz
root@armpro download# tar -C glibc-2.3.1 -zxf glibc-linuxthreads-2.3.1.tar.gz
root@armpro download# cd glibc-2.3.1
root@armpro glibc-2.3.1# ./configure arm-linux --build=i686-pc-linux-gnu --with-headers=/var/download/linux/include --enable-add-ons --enable-shared --prefix=/usr/arm-linux --with-cpu=xscale --without-fp --enable-kernel=2.4.19
root@armpro glibc-2.3.1# make
root@armpro glibc-2.3.1# make install 

12. gcc 재설치  

이제 마지막으로 gcc를 재설치하여야 한다.

물론 옵션이 달라진다.

root@armpro /# cd /var/download/
root@armpro download# rm -rf gcc-3.2.1
root@armpro download# tar zxvf gcc-3.2.1.tar.gz
root@armpro download# patch -p1 < gcc-3.2.1-oerlikon.patch
root@armpro download# cd gcc-3.2.1
root@armpro gcc-3.2.1# ./configure --target=arm-linux --prefix=/usr --with-headers=/var/download/linux/include --with-cpu=xscale --with-softfloat-support=internal --enable-languages=c,c++ --nfp

root@armpro gcc-3.2.1# perl -pi -e 's/int namelen/unsigned int namelen/' libjava/java/net/natInetAddress.cc

root@armpro gcc-3.2.1# make root@armpro gcc-3.2.1# make install

13. 시험  

정상적인 다음과 같이 시험해 보자

test.c 란 화일을 하나 만든다.

다음과 같이 컴파일 한다.

arm-linux-gcc -o test test.c

다음과 같이 나오면 정상이다.

root@armpro tmp# file test

test: ELF 32-bit LSB executable, ARM, version 1 (ARM), dynamically linked (uses shared libs), not stripped

이렇게 구축한 크로스 컴파일러는 당연히 xscale도 컴파일이 되며 그외 arm 계통은 모두 컴파일 된다.

어떤 프로세스들을 지원하는가를 보고 싶다면

arm-linux-gcc -dumpspecs

하면 지원되는 프로세스 목록이 보일 것이다.

Posted by rommance at 2005-03-23 15:02:31 . 2574 hits . source . info . diff . 0.721 sec