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
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11