zoukankan      html  css  js  c++  java
  • 【转】Android Toolchain与Bionic Libc

    Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载:

    http://android.kernel.org/pub/android-toolchain-20081019.tar.bz2。如果下载了完整的Android项目的源代码,则可以在“<your_android>/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin”目录下找到交叉编译工具,比如Android所用的arm-eabi-gcc-4.2.1。

    Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也是基于Bionic Libc而并非glibc的。这使得使用或移植其他Toolchain来用于Android要比较麻烦:在Google公布用于Android的官方Toolchain之前,多数的Android爱好者使用的Toolchain是在http://www.codesourcery.com/gnu_toolchains/arm/download.html 下载的一个通用的Toolchain,它用来编译和移植Android 的Linux内核是可行的,因为内核并不需要C库,但是开发Android的应用程序时,直接采用或者移植其他的Toolchain都比较麻烦,其他Toolchain编译的应用程序只能采用静态编译的方式才能运行于Android模拟器中,这显然是实际开发中所不能接受的方式。目前尚没有看到说明成功移植其他交叉编译器来编译Android应用程序的资料。

    与glibc相比,Bionic Libc有如下一些特点:

    -          采用BSD License,而不是glibc的GPL License;

    -          大小只有大约200k,比glibc差不多小一半,且比glibc更快;

    -          实现了一个更小、更快的pthread;

    -          提供了一些Android所需要的重要函数,如”getprop”, “LOGI”等;

    -          不完全支持POSIX标准,比如C++ exceptions,wide chars等;

    -          不提供libthread_db 和 libm的实现

    另外,Android中所用的其他一些二进制工具也比较特殊:

    -          加载动态库时使用的是/system/bin/linker而不是常用的/lib/ld.so;

    -          prelink工具不是常用的prelink而是apriori,其源代码位于” <your_android>/build/tools/apriori”

    -          strip工具也没有采用常用的strip,即“<your_android>/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin”目录下的arm-eabi-strip,而是位于<your_android>/out/host/linux-x86/bin/的soslim工具。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/TopEmbedded/archive/2008/12/10/3492649.aspx

  • 相关阅读:
    C# json提取多层嵌套到数组-- C# json 数组
    JS中的prototype
    JS_&&||
    js 匿名函数 js-函数定义方法
    js匿名函数确实是个好东西
    JavaScript:undefined!=false之解 及==比较的规则
    Sql 中常用日期转换Convert(Datetime) convert datetime
    jquery设置元素的readonly和disabled
    eWebEditor复制粘贴图片时过滤域名
    java构造函数使用方法总结
  • 原文地址:https://www.cnblogs.com/jacktu/p/1542348.html
Copyright © 2011-2022 走看看