Android 源代码目录结构1 - bionic
2011-11-02 11:19
316 查看
Bionic是Android的C library。libc是GNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNU的libc,也叫glibc。Android之所以采用bionic而不是glibc,有几个原因:
版权问题,因为glibc是LGPL
库的体积和速度,bionic要比glibc小很多。
提供了一些Android特定的函数,getprop LOGI等
Bionic Libc有如下特点:
采用BSD License, 而不是glibc的GPL License;
大约有200KB, 比glibc小很多,且比glibc要快;
实现了一个更小,更快的pthread;
提供了Android所需要的重要函数,如getprop LOGI等
不完全支持POXIC标注,譬如C++ exceptions, wide chars等;
不支持libthread_db和libm的实现
以下是bionic的目录结构,我们逐一分析
|-- Android.mk
|-- CleanSpec.mk
|-- libc (c 库)
| |-- Android.mk
| |-- arch-arm (arm构架相关的实现,主要是针对arm的优化,以及和处理器相关的调用)
| |-- arch-sh
| |-- arch-x86 (x86架构相关的实现)
| |-- bionic
| |-- C***EATS
| |-- 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 dlerror dlclose 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 (Android dynamic 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
`-- ThirdPartyProject.prop
Android.mk bionoc libc模块的Makefile
17 LOCAL_PATH := $(call my-dir)
18
19 ifneq ($(TARGET_SIMULATOR),true)
20 include $(call all-subdir-makefiles)
21 else
22 # The host dalvikvm needs Android's concatenated & indexed timezone data.
23 include $(LOCAL_PATH)/libc/zoneinfo/Android.mk
24 endif
非simulator编译情况下,会包含所有子目录下的.mk文件
版权问题,因为glibc是LGPL
库的体积和速度,bionic要比glibc小很多。
提供了一些Android特定的函数,getprop LOGI等
Bionic Libc有如下特点:
采用BSD License, 而不是glibc的GPL License;
大约有200KB, 比glibc小很多,且比glibc要快;
实现了一个更小,更快的pthread;
提供了Android所需要的重要函数,如getprop LOGI等
不完全支持POXIC标注,譬如C++ exceptions, wide chars等;
不支持libthread_db和libm的实现
以下是bionic的目录结构,我们逐一分析
|-- Android.mk
|-- CleanSpec.mk
|-- libc (c 库)
| |-- Android.mk
| |-- arch-arm (arm构架相关的实现,主要是针对arm的优化,以及和处理器相关的调用)
| |-- arch-sh
| |-- arch-x86 (x86架构相关的实现)
| |-- bionic
| |-- C***EATS
| |-- 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 dlerror dlclose 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 (Android dynamic 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
`-- ThirdPartyProject.prop
Android.mk bionoc libc模块的Makefile
17 LOCAL_PATH := $(call my-dir)
18
19 ifneq ($(TARGET_SIMULATOR),true)
20 include $(call all-subdir-makefiles)
21 else
22 # The host dalvikvm needs Android's concatenated & indexed timezone data.
23 include $(LOCAL_PATH)/libc/zoneinfo/Android.mk
24 endif
非simulator编译情况下,会包含所有子目录下的.mk文件
相关文章推荐
- 高通 android 源代码以及目标系统目录结构
- Android 源代码目录结构分析
- Android项目源代码目录结构
- 高通 android 源代码以及目标系统目录结构
- android bionic (Android的C/C++调用库)目录结构
- Android 源代码目录结构2- build
- Google Android源代码包目录结构分析
- Android 源代码编译前后的目录结构
- Android应用程序目录结构
- 转载]Skia源代码目录结构
- Android目录结构
- Android工程目录结构及基本常用框架
- 【Android开发】Android应用程序目录结构
- Android 4.0.3 源代码结构分析(一)
- Android开发学习之路--Android Studio项目目录结构简介
- Android 4.0.3 源代码结构分析(一)
- 浅谈android中的目录结构