1. 툴체인 다운로드

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

다운이 완료되면 압축을 푼다.
junsu@ubuntu:~/work$ sudo tar xvfj arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 
2. 툴체인 환경 설정
홖경 설정은 쉘 초기화 파일에 해당 설정 매크로를 적어 주는 것으로 젂부입니다. bashrc 파일에 아래와 같은 내용을 추가해 줍니다.
설정은 root계정으로 접속후 해줍니다.(이상하게 User로 할경우 환경설정 및 확인은 정상으로 되나 컴파일이 안되는 경우가 있기에)
root 계정이 없을시 계정 생성
{
junsu@ubuntu:~/work$ sudo passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
}
junsu@ubuntu:~/work$ su root
Password: 
junsu@ubuntu:~/work# vi ~/.bashrc
export CROSS_COMPILE=/home/junsu/arm-2009q3/bin/arm-none-linux-gnueabi-
export PATH=$PATH:/home/junsu/arm-2009q3/bin
3. 툴체인 확인
Path가 정상적으로 설정이 되었는지를 먼저 확인해 보겠습니다.
junsu@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. 예제
이제 예제 코드를 하나 만들어서 직접 빌드를 해보도록 하겠습니다.
junsu@ubuntu:~/work# vi hello.c
#include <stdio.h>

int main(void)
{
        printf("Hello Embedded");
        return 0;
}

root@ubuntu:/home/junsu/work# ls
arm-2009q3  hello.c
root@ubuntu:/home/junsu/work# arm-none-linux-gnueabi-gcc -o hello-arm hello.c
root@ubuntu:/home/junsu/work# ls
arm-2009q3  hello-arm  hello.c
Hello-arm이라는 파일이 생성된것을 확인할수 있다.

root@ubuntu:/home/junsu/work# ./hello-arm 
bash: ./hello-arm: cannot execute binary file
실행을 시켜보면 위와 같이 실행할 수 없다고 나옵니다. 왜 그럴까요? 이유는 이 실행 파일은 ARM
CPU에서 실행하도록 크로스 컴파일러를 통해서 빌드된 것이기 때문입니다. 당연히 망고보드와 같은
ARM을 사용하는 보드에서 구동을 해야만 정상적으로 동작할 수 있는 것입니다.
저작자 표시 비영리

'우분투 > 개발환경' 카테고리의 다른 글

NFS 설치 & 환경 설정  (0) 2012/01/31
툴체인(Tool-Chain) 설치  (0) 2012/01/30
minicom 설치 (serial communication program in ubuntu)  (0) 2012/01/30
tftp 설치 & 환경 설정  (0) 2012/01/30
Posted by Bradkim


티스토리 툴바