Andorid中C/C++调用Bionic库问题
2014-02-26 17:33
190 查看
Andorid中C/C++调用Bionic库问题
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
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
相关文章推荐
- c静态库被c++程序调用时应该注意的问题
- c/c++ 调用QuickTime API中的细节问题
- C++ 构造/析构函数中调用虚函数的问题
- Java JNI调用c++ dll文件,传递参数乱码问题
- C++动态库返回char*C#调用失败问题
- C++调用python配置及编译出现的问题
- C++中构造函数和析构函数避免调用虚函数的问题 转载
- C++中局部静态变量的调用问题
- C#调用C++ DLL相关问题
- 关于WinRT中c++和c#相互调用的问题
- C++ 构造/析构函数中调用虚函数的问题
- Android JNI里c++调用java时遇到的FindClass返回0的问题
- C#调用C++Dll封装时遇到的一系列问题
- 关于C++中子类调用父类方法的一个问题
- C与C++的相互调用问题
- C#调用C++Dll封装时遇到的一系列问题
- iPhone调用MAC OS X上C/C++写的.dylib问题(一)
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- 关于C++调用C#封装的dll后,获取C#中string返回值的问题
- C#调用C++Dll封装时遇到的一系列问题