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


BionicAndroidC/C++ library, libcGNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNUlibc,也叫glibcAndroid之所以采用bionic而不是glibc,有几个原因:  

1、版权问题,因为glibcLGPL

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


Logo

更多推荐