【转帖】安卓的Bionic 简介
https://blog.csdn.net/yongyu_it/article/details/52574797 google 自己实现了一套libc 的库函数 比glibc 要小一些 占用内存也小。。 安卓的成功不是简简单单的。
Bionic简介
1、什么是Bionic?
Bionic是Android平台为C/C++开发者进行原生应用程序开发所提供的符合POSIX(可移植操作系统接口)标准的C库。
是Android操作系统BSD(UNIX操作系统中的一个分支)标准C库的衍生库。
Bionic提供了在Android平台上开发任何类型的功能性原生代码所需的最小构造集。
通俗地讲,Bionic(Bionic的头文件集)就是NDK的API
Bionic C库头文件在 %NDK_HOME%\platforms\android-<api-level>\arch-<architecture>\usr\include内。
2、其他的C标准库
只要是符合ANSI(美国国家标准学会) C标准的C库都可以叫做标准C库。
POSIX标准的C库是在ANSI标准的C库的基础上增加一些附加结构。
现有的著名的POSIX标准的C库有:GUN C库(glibc)和Embedded Linux C库(uClibc)。
注意,Bionic C库不以任何方式与其他标准C库二进制兼容,这意味着基于其他C库生成的二进制文件不应该与Bionic进行动态链接。
注意,虽然Android只提供Bionic C库,但是基于其他符合POSIX标准C库生成的应用,无可争议地可以在Android上面运行(因为Android本身是支持POSIX标准的)。
3、Bionic内容
Bionic提供了:C标准库宏、类型定义、函数,以及少数Android特有特性。
从功能角度Bionic提供了:
内存管理
文件输入/出
字符串操作
数学
日期和时间
进程控制
信号处理
网络套接字
多线程
用户和组
系统配置
命名服务切换
【转帖】安卓的Bionic 简介的更多相关文章
- 转帖: Serverless架构模式简介
Serverless架构模式简介 原贴地址:https://blog.csdn.net/chdhust/article/details/71250099?utm_medium=referral&a ...
- [转帖]linux lsof 用法简介
linux lsof 用法简介 https://www.cnblogs.com/saneri/p/5333333.html 1.简介: lsof(list open files)是一个列出当前系统打开 ...
- [转帖]8086 CPU 寄存器简介
8086 CPU 寄存器简介 https://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 哎 没看完 感觉好复杂. 引子 打算写几篇 ...
- [转帖]influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB
influxdb和boltDB简介——MVCC+B+树,Go写成,Bolt类似于LMDB,这个被认为是在现代kye/value存储中最好的,influxdb后端存储有LevelDB换成了BoltDB ...
- [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...
- 关于GPL的一些知识
1.什么是GPL GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费.具有以下特点: ...
- 复利计算APP版-----娱乐一下
先不说那么多,下载地址来一个:http://pan.baidu.com/s/1eSz2GBg 目前版本号为:0.3 lastest 软件上线了!三平台首发! 下载地址: http://shouji.b ...
- 【转】GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介 排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不 ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
随机推荐
- BZOJ 1097: [POI2007]旅游景点atr 状态压缩+Dijkstra
题解: $k<=20,$ 考虑状压dp. 从 $1$ 号点走到 $n$ 号点经过的点的个数可能会非常多,但是强制要求经过的点一共才 $20$ 个. 而我们发现这个题好就好在可以经过某个城市,而不 ...
- javascript面向对象 用new创建一个基于原型的javascript对象
//创建一个类 其实就是个对象 var Student={ name:"robot", height:1.6, run:function(){ console.log(this.n ...
- C#字符串和值转换 以及万能转换
2.使用万能转换器进行不同类型转换 Convert.ToXxx(object value) int iRet = Convert.ToInt32("201"); float fR ...
- JavaScript设计模式—装饰器模式
装饰器模式介绍 为对象添加新的功能,不改变其原有的结构和功能,原有的功能还是可以使用,跟适配器模式不一样,适配器模式原有的已经不能使用了,装饰器示例比如手机壳 UML类图和代码示例 Circle示原来 ...
- 苹果系统OSX中Automator批量重命名
Automator,看字面意思就无比强大,[自动机器].有什么能比自动还让人着魔? 答案是没有✔ 如果你用的是mac,如果你有一堆文件要重新整理命名,如果你还在Goole什么"批量重命名软件 ...
- 安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境, 使用ubuntu 自带的Python环境
方法一: 退出base环境回到系统自带的环境 conda deactivate 方法二 1,通过将auto_activate_base参数设置为false实现: conda config --set ...
- C/C++程序基础-如何理解C++是面向对象化的,而C是面向过程化的
1:答:C是面向过程化的,但是C++不是完全面向对象化的.在C++中也完全可以写出与C一样过程化的程序,所以只能说C++拥有面向对象的特性.Tava是真正面向对象化的.
- Telerik JustDecompile
Free. For everyone. Forever. With an open source decompilation engine https://www.telerik.com/produc ...
- HearthBuddy 突袭 rush
https://hearthstone.gamepedia.com/Rush Rush is an ability allowing a minion to attack other minions ...
- Linux shell利用sed如何批量更改文件名详解[转载]
需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...