Kandroid Archive (Old article backup) 
[armv6-arm1136] 칸드로이드 툴체인 (ver1.1.2.1-20080330)
작성자
작성일 2008-05-31 (토) 18:12
ㆍ추천: 0  ㆍ조회: 8504      
IP: 218.xxx.168
안드로이드 커널 및 시스템 라이브러리 (예: libc , webkit , sqlite , etc), 기존 C/++ 코드 재사용을 위한 처지에
있는 분들이 안드로이드용 툴체인을 반드시 사용해야 되는 경우에 해당될것으로 알고 있습니다. 아래의 툴체인을
사용하시면서 버그 및 문제 사항들을 댓글로 올려 주시면 신속히 조치 및 의견을 드리겠습니다.
제작된 본 툴체인으로 arm1136jf-S core이상의 타겟보드에서 테스트를 마쳤습니다.

 ( * 테스트된 타겟보드: armadillo-500-arm1136jf-s , omap2430osk , logicpd-omap3430-Cortex-A8 , omap2evm ,
HTC-Kaiser , Nokia-N810, SMDK 6400 , SMDK 6410 , SMDK 6440 ,  S3C100/110 )
 
 
 

Kandroid Toolchain  ver 1.1.2.1 (May 30, 2008)
-------------------------------------------------------
 
1. Definition

  "Kandroid Toolchain" is Development tool for compiling android kernel and system libraries
   (ex: webkit, sqlite, libc, Etc) in android softwar stack for kandroid.org members.
  This Toolchain is a collection of software tools used for the development and building of software
   for a particular target architecture like ARM.
 
2. Goal

  -Easy to Use (Just decompress using tar command)
  -EABI  Support ( ABI Compatibility )
  -Support various compiler like gcc , g++ , gcj
  -The recent opensource version to reduce gap between versions.
  -NPTL Thread Model (Kernel Requirement : FUTEX , EPOLL)
  -Non Floating Point is default setting(Soft-Float).
  -Little Endian is default setting.
  -Support MPFR for multiple-precision floating-point computations with correct rounding. 
  -Include GDB, Strace for Fast Debugging and Tuning
 
3. Package Version information

-DesktopLinux : CentOS 5.1 (2.6.18-3)
-Target           : arm-android-linux-gnueabi       
-gcc version   : 4.2.3
-libc              : glibc (GNU C Library)
-libc version   :  2.7
-binutils version : 2.18.50.0.6
-kernel headers : 2.6.18
-float support    : soft-float
                        (Use the options -mfpu=vfp -mfloat-abi=softfp to enable VFP instructions. )
-Multiple-precision:
   . GMP : Gnu Multiple Precision arithmetic library ( http://gmplib.org/manual/ )
   . MPFR : C library for multiple-precision floating-point computations with correct rounding(http://www.mpfr.org/)
-threading model  : NPTL(Native Posix Thread Library)
-Misc  : GDB 6.6, strace 4.5.16 , DUMA 2.5.12
 
 
 
4. License

   GPL3 + LGPL3
 

5. Requirement

   -Architecture: ARMV6 , ARMV7
   -CPU Core  : ARM1136jf-s , ARM1176 , ARM Cortex-a8
   -Recommendation Targetboard: armadillo-500 (arm1136jf-s) , omap2430 OSK(arm1136jf-S) , omap3430 OSK(cortex-a8)
   -Host Linux Distributon(Recommend) : CentOS 5.X , Fedora  6/7/8/9 ( Fedora 9 recomendation)
 

6. Howto Use android toolchain

Fedora9#> wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
Fedora9#> ./configure --prefix=/usr/local
Fedora9make
Fedora9#> make install
Fedora9#> vi /etc/ld.so.conf
  include ld.so.conf.d/*.conf
  /usr/local/lib
Fedora9#> ldconfig
------------------------------------------------------------------------------------------
 fedora9#> cd /opt
 feodra9#> wget http://www.kandroid.org/devtools/kandroid-1.1.2.1-20080530.glibc.tgz [☜ 다운로드]
 fedora9#> tar xvzf kandroid-arm-toolchain-20080530.tgz
 fedora9#> cd ./kandroid-arm-toolchain-20080522/arm-android-linux-gnueabi/bin
 fedora9#> ls
               arm-android-linux-gnueabi-addr2line  arm-android-linux-gnueabi-gprof
               arm-android-linux-gnueabi-ar         arm-android-linux-gnueabi-jcf-dump
               arm-android-linux-gnueabi-as         arm-android-linux-gnueabi-jv-scan
               arm-android-linux-gnueabi-c++        arm-android-linux-gnueabi-ld
               arm-android-linux-gnueabi-c++filt    arm-android-linux-gnueabi-nm
               arm-android-linux-gnueabi-cc         arm-android-linux-gnueabi-objcopy
               arm-android-linux-gnueabi-cpp        arm-android-linux-gnueabi-objdump
               arm-android-linux-gnueabi-g++        arm-android-linux-gnueabi-populate
               arm-android-linux-gnueabi-gcc        arm-android-linux-gnueabi-ranlib
               arm-android-linux-gnueabi-gcc-4.2.3  arm-android-linux-gnueabi-readelf
               arm-android-linux-gnueabi-gccbug     arm-android-linux-gnueabi-run
               arm-android-linux-gnueabi-gcj        arm-android-linux-gnueabi-size
               arm-android-linux-gnueabi-gcjh       arm-android-linux-gnueabi-sstrip
               arm-android-linux-gnueabi-gcov       arm-android-linux-gnueabi-strings
               arm-android-linux-gnueabi-gdb        arm-android-linux-gnueabi-strip
               arm-android-linux-gnueabi-gjnih
----------------------------------------------------------------------------------------
fedora9#>
fedora9#> ./arm-android-linux-gnueabi-gcc -v
---------------------------------------------------------------------------------------------------------------
Using built-in specs.
Target: arm-android-linux-gnueabi
Configured with: /opt/androidtoolchain110/bin/targets/src/gcc-4.2.3/configure --build=i686-pc-linux-gnu --target=arm-android-linux-gnueabi --host=i686-pc-linux-gnu --prefix=/root/x-tools/arm-android-linux-gnueabi --with-sysroot=/root/x-tools/arm-android-linux-gnueabi/arm-android-linux-gnueabi/sys-root --enable-languages=c,c++,java --with-arch=armv6j --with-cpu=arm1136jf-s --with-tune=arm1136jf-s --with-float=soft --enable-__cxa_atexit --disable-multilib --with-gmp=/root/x-tools/arm-android-linux-gnueabi --with-mpfr=/root/x-tools/arm-android-linux-gnueabi --with-local-prefix=/root/x-tools/arm-android-linux-gnueabi/arm-android-linux-gnueabi/sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --with-bugurl=http://www.kandroid.org --with-pkgversion=kandroid-invain-arm_v6_nfp_le-ver.1.1.2.1
Thread model: posix
gcc version 4.2.3
----------------------------------------------------------------------------------------------------------
 fedora9#> vi autotoolpath.sh
#!/bin/bash
export PATH=/opt/kandroid-1.1.2.1-20080530.glibc/bin:$PATH
export CC=arm-android-linux-gnueabi-gcc
export LD=arm-android-linux-gnueabi-ld
export AR=arm-android-linux-gnueabi-ar
export RANLIB=arm-android-linux-gnueabi-ranlib
export CPP=arm-android-linux-gnueabi-cpp
export LOG=/opt/omap2evm/sources/kernel/build/log.txt
 fedora9#>
 Ok. It's finished installaton android toolchain successfully.
 Enjoy!
 
 
7. Bug Report or Contacts

   Use http://kandroid.org website  or invain@naver.com
   For example , Compile  your android kernel source or system libraries with this  android toolchain.
 

8. Ref

    -gcc 4.3 depends on mpfr>=2.3.1
 
 
9. Todo

  - Support  ltrace for glibc api  and user libraries  tracing
  - Extensible cross languages like ada , object C ,object C++
  -  --enable-thread-safe  option problem of MPFR configure command.
 

end of line.
이름아이콘 들풀
2009-03-12 00:07
omap3evm 테스트 완료했습니다.
OMAP3530과 같이 armv7 타겟을 사용하시는 분들은,
Android prebuild toolchain이나, Codesourcery toolchain 을 사용하시기 보다,
위의 kandroid toolchain을 사용하시기 바랍니다.
포크맨 들풀님 수고 많으셨습니다. OMAP3530에서는 0530일 버전이 별 수정없이 동작하나 보네요.. 좋은 툴을 제공해 주셔서 감사합니다. 3/12 00:57
들풀 모든 게 인베인님의 노력의 산물입니다.
우리 모두 kandroid toolchain을 사랑하면 좋을 듯 합니다.~
3/12 05:55
   
이름아이콘 깡이
2009-11-26 13:44
기본적인 질문드립니다. 이 toolchain으로 Android source 전체를 full-build 가능한가요? 아니면 일부에만 한정적인 것인지요.. bionic-c기반 toolchain 이외에는 테스트해본적이 없어 질문드립니다. 아울러 기존 bionic-c기반의 toolchain이 아닌 uclibc/glibc기반 toolchain을 만들기 위해서는 어떤 작업들이 필요한지도 궁금합니다
인베인 이 툴체인으로 직접 bionic library에 맵핑시켜서 컴파일시키시면 됩니다. 11/26 23:21
   
이름아이콘 깡이
2009-12-01 12:27
《Re》깡이 님 ,
제가 잘 이해가 안되서 다시 여쭈어봅니다. 이 toolchain을 사용하면 bionic c lib가 필요없는건가요? 만약 bionic c lib가 필요하다면 이 toolchain이 glibc기반인 것이 어떤 필요성 때문인지 궁금합니다. 조금만 더 자세한 설명주시면 감사하겠습니다
인베인 간단합니다. 안드로이드에 이미 NDK가 존재하기 떄문에, 이 툴체인은 glibc기반의 오픈소스들을 static빌드하여 안드로이드 시스템에서 많이 활용할수 있기 위해서였습니다.(c/c++ 오픈소스들이 bionic으로 컴파일에러가 많았었거던요...^^) 또한, bionic으로 연결하고 싶을뗀 그냥 bionic lib를 맵핑하기 때문이었습니다. 4/23 10:40
   
이름아이콘 토르킨
2009-12-27 20:56
우분투로도 툴체인 사용 가능한가요./
인베인 네. 페도라 9/10/11/12/13 , RHEL5/CENTOS5 , RHEL6/SL6 , Ubuntu 9.04(LTS)에서 정상 동작여부 체크하였습니다. 4/23 10:36
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.