简介
C标准函数库在C语言程序设计中,提供符合标准的头文件,以及常用的库函数实现(如I/O输入输出和字符串控制)。
HarmonyOS采用musl作为C标准库,musl库是一个轻量,快速,简单,免费的开源libc库
标准C库组件介绍
[libc、libm、libdl]组合实现C11标准C库。
libc:包含线程相关接口,以及大部分标准接口。
libm:数学库函数接口,当前在HarmonyOS中是一个链接,实际都在libc中定义。
libdl:dlopen等动态链接器接口,当前在HarmonyOS中是一个链接,实际都在libc中定义。
musl版本号
1.2.0
从HarmonyOS4.0开始,版本升级到1.2.3
从HarmonyOS5.0开始,版本升级到1.2.5
支持的能力
提供兼容C99、C11、POSIX标准的头文件,以及库函数接口,但不是完全兼容;支持armv7a、arm64、x86_64三种架构的支持;
为了更好的适配HarmonyOS设备的高性能、低内存、高安全、轻量化、支持多种形态设备的基本特征;在musl开源库的基础上进行了优化,增强,对不适用嵌入式设备的接口进行了裁剪。
新增能力
- 动态加载器支持命名空间隔离能力,应用可以dlopen加载的动态库受系统命名空间限制(比如,无法打开系统侧动态库)。
- 支持dlclose真实卸载动态库能力,musl的开源版本不支持。
- 支持symbol-versioning功能。
- dlopen支持直接加载zip包中未压缩的文件。
调试能力
libc提供了动态使能维测log功能(默认关闭),供开发者需要的时候查看libc库异常。使用libc提供的动态使能维测log功能,不需要重新编译libc库,只需设置param属性即可。在正式发布版本中,不建议使能,会影响运行性能。
1. musl.log功能
设置musl.log.enable属性为true,打开musl维测log打印。打印其他日志,需先打开此开关。
param set musl.log.enable true
2. 加载器log功能
加载器是libc中负责程序引导,dlopen,dlclose等动态链接程序,如需要查看动态加载过程异常,可以打开加载器log。用法如下:
- 使能全部应用的加载器log,log量比较大,请谨慎使用。
param set musl.log.ld.app true
- 使能指定应用的加载器log,{app_name}需要替换成真实需要打印log的应用名字。
param set musl.log.ld.all false
param set musl.log.ld.app.{app_name} true
- 打印全部应用除指定名字应用外的加载器日志。
param set musl.log.ld.all true
param set musl.log.ld.app.{app_name} false
musl 差异规格接口说明
接口名称 | 说明 |
---|---|
epoll_create | 在HarmonyOS5.0 上 该接口逻辑与1.2.3版本保持一致,不会对入参进行判断,不区分入参小于等于0的情况,预计下版本更新此接口逻辑与社区1.2.5保持一致,增加入参逻辑判断,入参小于等于0时创建失败,并返回错误码EINVAL。 |
ICONV支持的字符集编码格式
musl支持的字符集编码格式,以及受支持的别名。
注意
在进行字符集编码格式转换时,请使用正确的源字符集编码格式,且目标字符集编码格式必须支持这些受转换的字符,否则转换失败。
在musl里不支持将源字符集编码格式转换成这五种目标字符集编码格式:gb18030,gbk,gb2312,big5和euckr。
编码格式 | 别名 | musl支持情况 |
---|---|---|
utf8 | 支持 | |
wchart | 支持 | |
ucs2be | 支持 | |
ucs2le | 支持 | |
utf16be | 支持 | |
utf16le | 支持 | |
ucs4be | utf32be | 支持 |
ucs4le | utf32le | 支持 |
ascii | usascii, iso646, iso646us | 支持 |
utf16 | 支持 | |
ucs4 | utf32 | 支持 |
ucs2 | 支持 | |
eucjp | 支持 | |
shiftjis | sjis, cp932 | 支持 |
iso2022jp | 支持 | |
gb18030 | 支持 | |
gbk | 支持 | |
gb2312 | 支持 | |
big5 | bigfive, cp950, big5hkscs | 支持 |
euckr | ksc5601, ksx1001, cp949 | 支持 |
iso88591 | latin1 | 支持 |
iso88592 | 支持 | |
iso88593 | 支持 | |
iso88594 | 支持 | |
iso88595 | 支持 | |
iso88596 | 支持 | |
iso88597 | 支持 | |
iso88598 | 支持 | |
iso88599 | 支持 | |
iso885910 | 支持 | |
iso885911 | tis620 | 支持 |
iso885913 | 支持 | |
iso885914 | 支持 | |
iso885915 | latin9 | 支持 |
iso885916 | 支持 | |
cp1250 | windows1250 | 支持 |
cp1251 | windows1251 | 支持 |
cp1252 | windows1252 | 支持 |
cp1253 | windows1253 | 支持 |
cp1254 | windows1254 | 支持 |
cp1255 | windows1255 | 支持 |
cp1256 | windows1256 | 支持 |
cp1257 | windows1257 | 支持 |
cp1258 | windows1258 | 支持 |
koi8r | 支持 | |
koi8u | 支持 | |
cp437 | 支持 | |
cp850 | 支持 | |
cp866 | 支持 | |
cp1047 | ibm1047 | 支持 |
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿