转 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

转自:http://mips.eefocus.com/article/10-08/1968501281349312.htmlAndroid所用的Toolchain(即交叉编译工具链)可从下面的网址下载...

转Android 安全攻防(二): SEAndroid bionic

Android 安全攻防(二): SEAndroid bionic        转自:http://blog.csdn.net/yiyaaixuexi/article/details/849088...

Android内核源码bionic目录下的子目录arch-arm源码分析笔记

依旧是好记性不如烂笔头,今天需要学习的是arch-arm目录下的代码。 首先我们先看一下inclue目录下的endian这个头文件我们主要是需要知道下面的几点知识。 1、先看一下下面的代码的片段 ...

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

1. 前提:     android系统把标准输出stdout, stderr,从定向到/dev/null 中,所以使用printf(),就使用logcat中查看到log信息。 2. 实际...

android bionic linker debug enable

Linker—android里面的加载器ld这类的基础库要想调试基本上gdb是派不上用场的,最好用的还是printf,这里的printf是个泛指 android 的调试基本上都是通过logcat 输...

Android NDK Bionic API篇(三)

本篇重点学习一下NDK的核心开发库Bionic API库,通过Bionic API我们可以开发各种各样的原生功能,真正发挥原生开发的强大功能。...
  • kgdwbb
  • kgdwbb
  • 2017年06月08日 21:17
  • 491

Android 源代码目录结构1 - bionic

Bionic是Android的C library。libc是GNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNU的libc,也叫glibc。Android之所以采用bionic而不...
  • kickxxx
  • kickxxx
  • 2011年11月02日 11:19
  • 4355

Android-- bionic介绍

Android-- bionic介绍 小组人员移植ntfs-3g碰到lseek越界问题,经过查证其使用了llseek函数导致死机的问题。 其实问题很简单: 调用处: llseek...

ANDROID Bionic C DOCS

Bionic C 库一览: 介绍: 核心体系: Bionic设计的核心思想是:尽量简单。 这意味这这个C库只围绕着内核提供轻量级的包装,我们让它尽量小,不去处理一些细枝末页的事情。 ...
  • Kaiwii
  • Kaiwii
  • 2012年09月11日 10:54
  • 1542

android ndk翻译之七:Bionic C 库一览

Bionic C 库一览: 介绍: 核心体系: Bionic设计的核心思想是:尽量简单。 这意味这这个C库只围绕着内核提供轻量级的包装,我们让它尽量小,不去处理一些细枝末页的事情。 ...
  • fyfcauc
  • fyfcauc
  • 2014年09月25日 20:15
  • 649
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:转 Android Toolchain与Bionic Libc
举报原因:
原因补充:

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