Bionic是Android的C/C++ library, libc是GNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNU的libc,也叫glibc。Android之所以采用bionic而不是glibc,有几个原因:  
 
1、版权问题,因为glibc是LGPL
 
2、库的体积和速度,bionic要比glibc小很多。
 
3、提供了一些Android特定的函数,getprop LOGI等
由于这个是基础library,因此在开发中(特别是底层开发中),不可避免要调用到这个库中的一些方法。在使用这些方法的时候,要引用包含这些方法的头文件,添加路径如下:
外部引用bionic头文件
 
Include Paths:  
 
 
  The Androidbuild system should automatically provide the necessary include
 
  paths requiredto build against the C library headers. However, if you want
 
  to do thatyourself, you will need to add:
 
  
 
     libc/arch-$ARCH/include
 
     libc/include
 
     libc/kernel/common
 
     libc/kernel/arch-$ARCH 
 
 
 
  to your Cinclude path.
 
 
 
 
 这些就是android系统中使用的标C头文件所在处
 
-------------
 
bionic主要目录结构及主要功能如下:
 
|-- Android.mk
 
 
 
|-- CleanSpec.mk
 
|-- libc   (c 库)
 
|   |-- Android.mk
 
|   |-- arch-arm (arm构架相关的实现,主要是针对arm的优化,以及和处理器相关的调用)
 
|   |-- arch-sh  (ST公司的SH4体系实现)
 
|   |-- arch-x86 (x86架构相关的实现)
 
|   |-- arch-mips(mips架构相关的实现)
 
|   |-- bionic
 
|   |-- CAVEATS
 
|   |-- docs
 
|   |-- include
 
|   |-- inet
 
|   |-- Jamfile
 
|   |-- kernel
 
|   |--MODULE_LICENSE_BSD
 
|   |-- netbsd
 
|   |-- NOTICE
 
|   |-- private
 
|   |-- README
 
|   |-- regex
 
|   |-- stdio
 
|   |-- stdlib
 
|   |-- string
 
|   |--SYSCALLS.TXT
 
|   |-- tools
 
|   |-- tzcode
 
|   |-- unistd
 
|   |-- wchar
 
|   `-- zoneinfo
 
|-- libdl      (动态链接库访问接口 dlopen dlsym dlerrordlclose dladdr的实现)
 
|   |-- Android.mk
 
|   |-- arch-sh
 
|   |-- dltest.c
 
|   |-- libdl.c
 
|   |--MODULE_LICENSE_BSD
 
|   `-- NOTICE
 
|-- libm   (C数学函数库,提供了常见的数序函数和浮点运算)
 
|   |-- alpha
 
|   |-- amd64
 
|   |-- Android.mk
 
|   |-- arm
 
|   |-- bsdsrc
 
|   |--fpclassify.c
 
|   |-- i386
 
|   |-- i387
 
|   |-- ia64
 
|   |-- include
 
|   |-- isinf.c
 
|   |--Makefile-orig
 
|   |-- man
 
|   |--MODULE_LICENSE_BSD_LIKE
 
|   |-- NOTICE
 
|   |-- powerpc
 
|   |-- sh
 
|   |-- sincos.c
 
|   |-- sparc64
 
|   `-- src
 
|-- libstdc++  (standard c++ lib)
 
|   |-- Android.mk
 
|   |-- include
 
|   |--MODULE_LICENSE_BSD
 
|   |-- NOTICE
 
|   `-- src
 
|-- libthread_db (线程调试库,可以利用此库对多线程程序进行调试)
 
|   |-- Android.mk
 
|   |-- include
 
|   |--libthread_db.c
 
|   |--MODULE_LICENSE_BSD
 
|   `-- NOTICE
 
|-- linker (Androiddynamic linker)
 
|   |-- Android.mk
 
|   |-- arch
 
|   |-- ba.c
 
|   |-- ba.h
 
|   |-- debugger.c
 
|   |-- dlfcn.c
 
|   |-- linker.c
 
|   |--linker_debug.h
 
|   |--linker_format.c
 
|   |--linker_format.h
 
|   |-- linker.h
 
|   |-- MODULE_LICENSE_APACHE2
 
|   |-- NOTICE
 
|   |-- README.TXT
 
|   `-- rt.c
 
|-- MAINTAINERS
