android bionic目录,Android 源代码目录结构1 - bionic

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

|   |-- 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 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文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值