|
안드로이드 커널 및 시스템 라이브러리 (예: 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
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. |