转 Android Toolchain与Bionic Libc

转载 2011年01月21日 11:03:00

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,而不是glibcGPL License

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

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

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

-          不完全支持POSIX标准,比如C++ exceptionswide 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工具。

Android Toolchain与Bionic Libc

Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载:http://android.kernel.org/pub/android-toolchain-20081019.tar....
  • TopEmbedded
  • TopEmbedded
  • 2008年12月10日 20:16
  • 12911

Android Toolchain与Bionic Libc

 Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载: http://android.kernel.org/pub/android-toolchain-20081019.ta...
  • linweig
  • linweig
  • 2009年12月22日 18:19
  • 1134

Bionic C与 Glibc 比较

本文讲述内容主要是总结Bionic vs Glibc Report Master Thesis一文 Android 使用Bionic C 而不使用Glic的最主要原因: 1,有限的空间和存储 2,...
  • XiaoXiaoLuZuo
  • XiaoXiaoLuZuo
  • 2013年11月22日 16:18
  • 1609

Bionic C 库概述(Bionic Overview)

一、核心思想:简单化 即C库应该只提供对内核功能的轻量级封装,不应该过于智能化,考虑太多的边界条件。 Bionic这个词表明它一部分来自BSD,一部分来自Linux。它的源码主要是BSD C库的代...
  • smfwuxiao
  • smfwuxiao
  • 2013年01月19日 23:16
  • 5663

bionic库增加Andorid系统调用

系统调用例程: libc中有关系统调用 1.jb/bionic/libc/unistd/open.c 2.jb/bionic/libc/arch-arm/syscalls/__open.S kerne...
  • tankai19880619
  • tankai19880619
  • 2013年03月21日 12:53
  • 2034

Andorid中C/C++调用Bionic库问题

Andorid中C/C++调用Bionic库问题 Bionic是Android的C/C++ library, libc是GNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNU的li...
  • netwalk
  • netwalk
  • 2014年02月26日 17:33
  • 2614

Android沙盒开发之系统libc库定制修改

2013-07-29, 22:29:09  【原创】Android沙盒开发之系统libc库定制修改 标 题: 【原创】Android沙盒开发之系统libc库定制修...
  • u011354613
  • u011354613
  • 2016年08月16日 14:03
  • 1073

Android启动

init程序并不是有一个源代码文件组成的:/system/core/init主要的JNI代码放在如下路径中:frameworks/base/core/jni/还有:\bionic\libc\bioni...
  • myfather103
  • myfather103
  • 2017年06月25日 09:48
  • 127

android bionic移植需要注意的事项

下面通过一个例子来说明移植bionic需要做的事情(BIONIC使用的内核头文件从2.6.29 升级到 2.6.31):第一:修改之前,先要备份 android/bionic 第二:按照下面方法复制l...
  • knock
  • knock
  • 2010年03月11日 16:18
  • 3231

Android Lib层打印log之------bionic库打印log

1. 前提:     android系统把标准输出stdout, stderr,从定向到/dev/null 中,所以使用printf(),就使用logcat中查看到log信息。 2. 实际...
  • AndroidMage
  • AndroidMage
  • 2016年08月17日 11:58
  • 936
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:转 Android Toolchain与Bionic Libc
举报原因:
原因补充:

(最多只允许输入30个字)