내밥줄/리눅스

[펌] Make the Arm Cross ToolChain

jjoell 2009. 4. 16. 10:43

arm toolchain 만드는 방법은 현재 여러 가지 방법이 있다.

그중에서 ‘crosstool’을 사용한 가장 쉽고 간단한 방법을 선택했다.

 

1. http://www.kegel.com/crosstool/에서 crosstool-0.43.tar.gz를 받는다.

2. 압축 풀고 푼 경로로 이동한다.

# tar xvf crosstool-0.43.tar.gz

# cd crosstool-0.43

3. http://kegel.com/crosstool/crosstool-0.43/buildlogs/에가서 표를 보고 참조 해서 설치할 버전을 선택한다.

4. demo-arm.sh 수정하기 ( 참고로 demo-arm의 종류가 꽤있다. 용도에 맞게 선택! 아직 난 armv5와 arm 만 접해봐서 잘모르겠다.. )

# vi demo-arm.sh

편집기로 보면 #eval 'cat arm.dat ...... 이런식으로 주석이 많이 있다. 선택할 버전의 주석을 없앤다.

예 ) #eval 'cat arm.dat gcc-3.2.3..... -> eval 'cat arm.dat gcc-3.2.3....

나는 'gcc-3.4.5-glibc-2.3.5'를 선택했다.

그리고 소스 윗부분에 보면 다운받아야할 파일과 결과물 경로가 있다. 적절하게 바꾸어준다. 만약 결과물 경로가 /opt/crosstool이라면 경로를 만들어주고 권한 설정을 해줘야한다. 왜냐하면 root로 툴체인을 생성 할수 없게 되어 있다. 컴파일할때마다 경로를 만들지 못했다는 메시지가 계속 뜨게 된다...

해결예 ) # mkdir -p /opt/crosstool

# chmod 777 /opt/ -R

5. 컴파일 전 arm.dat 수정

4번에서 demo-arm.sh파일의 주석 제외한 것을 보면 arm.dat를 참조해서 파일을 만드는 것 같다. 만약armv5를 선택했다면 armv5.dat파일을

수정해야한다. vi 편집기로 열어보면 TARGET= 부분을 수정해주면된다.

# vi arm.dat

TARGET=arm-linux로 수정해준다.

그러면 디폴트로 /opt/crosstool안에 생성될 파일명이 arm-linux-xxx

로 파일이 생성된다. 이것을 수정안하면 arm-unknown-linux-gnu-xxx이런식의 파일명이 생성된다. 이러면 app를 컴파일할 때 상당히 귀찮아 질것으로 판단된다.

6. 툴체인 설치

root 계정으로 설치가 안되게 되어 있다. 적절히 대처~!

# ./demo-arm.sh

만약 설치중 무언가가 설치 안되었다는 메시지가 뜬다면 바로 설치 해준다.

페도라 기준

yum -y install 설치안된 파일명*

우분투 기준

apt-get install 설치안된 파일명*

설치되는 시간이 꽤 길다. 다운받고 컴파일 이렇게 1시간 정도 소요된 것 같다. 에러난 부분은 없었다.

나는 다음과 같은 에러가 발생했다.

/csu/version-info.h:2: error: missing terminating " character

/csu/version-info.h:3: error: missing terminating " character

다음과 같이 해결했다.

sudo mv /bin/sh /bin/sh.old

sudo ln -sf bash /bin/sh

bash로 빌드해야 제대로 된다고 하는것 같다.

7. 설정

결과물을 확인과 경로 설정은 알아서^^;

완료가 되면 /opt/crosstool/gcc-3.4.5-glibc-2.3.5/ 폴더가 생기고
오류가 뜨지않는다면 /opt/crosstool/ 폴더에 gcc-3.4.5-glibc-2.3.5/ 폴더가 생성되고.
gcc-3.4.5-glibc-2.3.5/arm-linu/bin 폴더에서 arm-linux-gcc 파일들이 생성된다.


vi ~/.bash_profile 또는  vi ~/.bashrc 에 다음을 추가한다.
export PATH=$PATH:/opt/crosstool/gcc-3.4.5-glibc-2.3.5/arm-linux/bin

이제 사용할 수 있을거다.


퍼온이 주: gcc-4.3.2에 버그가 있어 demo-arm.sh 실행 중간에 에러가 발생한다. gcc.gnu.org에서 gcc-4.3.3 소스를 받아 설치하면 해결할 수 있다. gcc-4.3.3을 설치하기 위해서는(우분투 8.10 기준) libgmp3-dev가 필요한데 apt-get을 이용하여 설치 할 수 있다.


출처:http://blog.naver.com/PostView.nhn?blogId=vcmania&logNo=54934696