- 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을 사용하는 보드에서 구동을 해야만 정상적으로 동작할 수 있는 것입니다.
[Eclipse]Eclipse 자주 쓰는 단축키 (0) | 2014.10.08 |
---|---|
Cross-Cable을 이용한 직접 연결 (0) | 2014.08.03 |
안드로이드 Full Source 다운로드 및 Build 하기(PDK 환경 구성) (0) | 2014.07.12 |
안드로이드 소스 컴파일 (ubuntu 11.04 + android gingerbread) (0) | 2013.03.17 |
Ubuntu 11.04 에서 jdk6 설치 (0) | 2013.03.17 |
댓글 영역