Andorid中C/C++调用Bionic库问题
<
div id=”content” contentScore=”3378″>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<br> <br>|-- libdl (动态链接库访问接口 dlopen dlsym dlerrordlclose dladdr的实现)<br> <br>| |-- Android.mk<br> <br>| |-- arch-sh<br> <br>| |-- dltest.c<br> <br>| |-- libdl.c<br> <br>| |--MODULE_LICENSE_BSD<br> <br>|
— 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<br> <br>|-- libstdc++ (standard c++ lib)<br> <br>| |-- Android.mk<br> <br>| |-- include<br> <br>| |--MODULE_LICENSE_BSD<br> <br>| |-- NOTICE<br> <br>|
— src
|– libthread_db (线程调试库,可以利用此库对多线程程序进行调试)
| |– Android.mk
| |– include
| |–libthread_db.c
| |–MODULE_LICENSE_BSD
| -- NOTICE<br> <br>|-- linker (Androiddynamic linker)<br> <br>| |-- Android.mk<br> <br>| |-- arch<br> <br>| |-- ba.c<br> <br>| |-- ba.h<br> <br>| |-- debugger.c<br> <br>| |-- dlfcn.c<br> <br>| |-- linker.c<br> <br>| |--linker_debug.h<br> <br>| |--linker_format.c<br> <br>| |--linker_format.h<br> <br>| |-- linker.h<br> <br>| |-- MODULE_LICENSE_APACHE2<br> <br>| |-- NOTICE<br> <br>| |-- README.TXT<br> <br>|
— rt.c
|– MAINTAINERS
更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11</sp