暂无描述
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 5 个月前 | ||
| 6 个月前 | ||
| 1 个月前 | ||
| 5 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 5 年前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 1 个月前 | ||
| 20 天前 | ||
| 11 天前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 18 天前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 2 个月前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 年前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 5 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |
Musl libc
musl,是MIT授权的针对Linux系统调用的API的标准C库实现,适用于广泛的部署环境。musl提供了高效的静态和动态链接支持, 为轻量级代码并且运行时开销低,在正确使用时具有强大的故障安全保证,以及标准一致性意义上的正确性和安全性。musl建立的原则是使用便于理解和维护的简单代码来实现目标。
musl的1.1版本系列涵盖了所有在ISO C99和POSIX 2008基础中定义的接口,以及一些非标准的为了与Linux、BSD和glibc功能兼容的接口。
目录结构
README_zh.md #中文说明
include #musl头文件
ldso #动态链接器
libc-test #关于musl的测试用例
ndk_musl_include #生成ndk版本的头文件
ndk_script #生成ndk版本的脚本
porting #linux liteos平台对musl适配文件
src #musl文件源
scripts #测试用脚本
Openharmony对于musl的适配
musl编译框架时编译,使用BUILD.gn进行配置编译。
基于openharmony的需求,为musl新增的特性:
- 加载器地址随机化,RELRO共享机制
- 提供加载器namespace机制
- OHOS容器中能够运行依赖bionic的库
- musl全球化接口适配locale数据能力
- mallocng堆内存分配器安全增强,默认开启meta指针混淆。地址随机化通过MALLOC_SECURE_ALL宏开关。可在编译命令中增加--gn-args="musl_secure_level=3"开启
等。在新增特性基础上,也进行了对于musl接口功能的完善与错误的修复。
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 | 支持 |
locale数据能力支持的接口
locale是通过third_party/icu的接口来实现,接口的规格取决于ICU。经过对比测试,ICU的范围能够完全覆盖且远大于mac os,但会小于linux的OS版本(如ubuntu、fedora)。
| 函数 | 用途 | 返回值 | 支持的字符集 |
|---|---|---|---|
| int isalnum_l(int c, locale_t l) | 根据locale设置判断字符是否是数字或字母(包括大小写) | 参数c是数字或字母返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isalpha_l(int c, locale_t l) | 根据locale设置判断字符是否是字母(包括大小写) | 参数c是字母返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isblank_l(int c, locale_t l) | 根据locale设置判断字符是否是空白字符 | 参数c是空白字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int iscntrl_l(int c, locale_t l) | 根据locale设置判断字符是否是控制字符 | 参数c是控制字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isdigit_l(int c, locale_t l) | 根据locale设置判断字符是否是数字 | 参数c是数字返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isgraph_l(int c, locale_t l) | 根据locale设置判断字符是否是图形字符 | 参数c是图形字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int islower_l(int c, locale_t l) | 根据locale设置判断字符是否是小写字母 | 参数c是小写字母返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isprint_l(int c, locale_t l) | 根据locale设置判断字符是否是可打印字符 | 参数c是可打印字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int ispunct_l(int c, locale_t l) | 根据locale设置判断字符是否是标点符号 | 参数c是标点符号返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isspace_l(int c, locale_t l) | 根据locale设置判断字符是否是空白字符,范围比iswblank_l小 | 参数c是空白字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isupper_l(int c, locale_t l) | 根据locale设置判断字符是否是大写字母 | 参数c是大写字母返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int isxdigit_l(int c, locale_t l) | 根据locale设置判断字符是否是十六进制数字字符 | 参数c是十六进制数字字符返回1,否则返回0 | zh_CN、zh_CN.UTF-8 |
| int tolower_l(int c, locale_t l) | 根据locale设置将给定的字符转换成小写形式 | 参数c是大写字母返回对应的小写字母,否则返回c | zh_CN、zh_CN.UTF-8 |
| int toupper_l(int c, locale_t l) | 根据locale设置将给定的字符转换成大写形式 | 参数c是小写字母返回对应的大写字母,否则返回c | zh_CN、zh_CN.UTF-8 |
Musl使用文档
有关完整musl目标编译器工具链、系统的信息bootstrapping和基于musl构建的Linux发行版可以在官方网站上找到:http://www.musl-libc.org/
有关基本安装说明,请参阅附带的INSTALL文件。