您的位置:首页 > 移动开发 > Android开发

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文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: