상세 컨텐츠

본문 제목

툴체인(Tool-Chain) 설치

Android 일반

by mobile 2014. 7. 13. 01:50

본문

반응형

- Ubuntu 12.04 TLS 64bit

1. 툴체인 다운로드

$ sudo wget http://crztech.iptime.org:8080/Release/Toolchain/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


다운이 완료되면 압축을 푼다.

$ sudo tar xvfj arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 


2. 툴체인 환경 설정

환경 설정은 쉘 초기화 파일에 해당 설정 매크로를 적어 주는 것으로 전부입니다. bashrc 파일에 아래와 같은 내용을 추가해 줍니다.

설정은 root계정으로 접속후 해줍니다.(이상하게 User로 할경우 환경설정 및 확인은 정상으로 되나 컴파일이 안되는 경우가 있기에)

root 계정이 없을시 계정 생성

{

$ sudo passwd

Enter new UNIX password: 

Retype new UNIX password: 

passwd: password updated successfully

}

$ su root

Password: 

vi ~/.bashrc

export CROSS_COMPILE=/home/cbcho/arm-2009q3/bin/arm-none-linux-gnueabi-

export PATH=$PATH:/home/cbcho/arm-2009q3/bin


3. 툴체인 확인

Path가 정상적으로 설정이 되었는지를 먼저 확인해 보겠습니다.

cbcho@ubuntu:~/work# arm-none-linux-gnueabi-gcc -v

Using built-in specs.

Target: arm-none-linux-gnueabi

Configured with: /scratch/julian/2009q3-respin-linux-lite/src/gcc-4.4/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --disable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q3-67' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/julian/2009q3-respin-linux-lite/obj/host-libs-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/julian/2009q3-respin-linux-lite/install/arm-none-linux-gnueabi/bin

Thread model: posix

gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) 

위와 같이 나온다면 정상적으로 동작하고 있는 것입니다.


4. 예제

이제 예제 코드를 하나 만들어서 직접 빌드를 해보도록 하겠습니다.

cbcho@ubuntu:~/work# vi hello.c

#include <stdio.h>



int main(void)

{

        printf("Hello Embedded");

        return 0;

}


root@ubuntu:/home/cbcho/work# ls

arm-2009q3  hello.c

root@ubuntu:/home/cbcho/work# arm-none-linux-gnueabi-gcc -o hello-arm hello.c

root@ubuntu:/home/cbcho/work# ls

arm-2009q3  hello-arm  hello.c

Hello-arm이라는 파일이 생성된것을 확인할수 있다.


root@ubuntu:/home/cbcho/work# ./hello-arm 

bash: ./hello-arm: cannot execute binary file

실행을 시켜보면 위와 같이 실행할 수 없다고 나옵니다. 왜 그럴까요? 이유는 이 실행 파일은 ARM

CPU에서 실행하도록 크로스 컴파일러를 통해서 빌드된 것이기 때문입니다. 당연히 망고보드와 같은

ARM을 사용하는 보드에서 구동을 해야만 정상적으로 동작할 수 있는 것입니다.





반응형

관련글 더보기

댓글 영역