赞
踩
当前M核编译时上层组件与内核统一使用musl-C,位于//third_party/musl/porting/liteos_m/kernel/
,内核当前的内部实现也是主要适配musl的结构体定义,但社区及三方厂商开发多使用公版工具链arm-none-eabi-gcc
加上私有定制优化进行编译,考虑我们内核的易用性提升,故支持公版arm-none-eabi-gcc
C库编译内核运行。
newlib是小型C库,针对posix接口涉及系统调用的部分,newlib提供一些需要系统适配的钩子函数,例如_exit()
,_open()
,_close()
,_gettimeofday()
等,操作系统适配这些钩子,就可以使用公版newlib工具链编译运行程序。
公版arm-none-eabi-
工具链中带有通用newlib的C库头文件,在一份通用的C库头文件中,使用不同的宏开关来控制一些 宏、类型、结构体、函数的声明或者定义。这些宏有以下几种:
1> 根据posix标准划分,例如:_POSIX_TIMERS
,_POSIX_CPUTIME
,_POSIX_THREADS
等。
2> 根据已支持的系统,例如:__CYGWIN__
,__rtems__
,__unix__
等。
3> 根据C库不同版本,例如:_GNU_SOURCE
,_BSD_SOURCE
等。
LiteOS-M不区分用户态内核态,上层组件与内核共用一套基于musl的C库,虽然编译时使用arm-none-eabi-gcc
,但只使用其工具链的编译功能,通过加上-nostdinc
与-nostdlib
强制使用我们自己改造后的musl-C。
内核提供了基于LOS_XXX适配实现pthread、mqeue、fs、semaphore、time等模块的posix接口(//kernel/liteos_m/kal/posix
)
内核提供的posix接口与musl中的标准C库接口共同组成LiteOS-M的LibC。
LiteOS-M的LibC组成结构:
newlib的适配实现:
头文件的适配:
原因类型 | 实施方法 | 例如 |
---|---|---|
头文件缺失 | 根据系统的实现所需,补充相关的标准声明定义 | <poll.h> |
被特定宏控制的声明定义 | //kernel/liteos_m/kal/libc/newlib/porting/include 中添加同名头文件,采用-I {kernel/liteos_m/kal/libc/newlib/porting/include} 加#include_next <XXX.h> 的方式,编译时先找到我们新增的同名头文件,打开相关的宏开关,再找到工具链的原始头文件,获得所需的声明定义。 | <sys/features.h> + <time.h> |
声明、定义差异 | 根据系统的具体实现,与#include_next 结合使用,替换工具链中的原始声明定义 | <sys/_pthreadtypes.h> |
实现的适配:
原因类型 | 实施方法 | 例如 |
---|---|---|
接口实现缺失 | 采用内核自研接口补充 | kal/libc/newlib/porting/src/fs.c |
newlib钩子适配 | 采用当前内核实现的LOS_XXX接口适配或者默认空实现 | kal/libc/newlib/porting/src/other_adapt.c |
采用定制化的接口实现 | 通过wrap编译选项,替换工具链中的默认实现 | kal/libc/newlib/porting/src/malloc.c |
make menuconfig
-->Compat
-->Choose libc implementation
选择newlibc
hb build -f
即可//kernel/liteos_m/kal/libc/newlib/porting/include
中进行补充有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
鸿蒙HarmonyOS Next全套学习资料←点击领取!(安全链接,放心点击)
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
鸿蒙(HarmonyOS NEXT)最新学习路线
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
HarmonyOS Next 最新全套视频教程
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
《鸿蒙开发进阶》
《鸿蒙进阶实战》
大厂面试必问面试题
鸿蒙南向开发技术
鸿蒙APP开发必备
鸿蒙生态应用开发白皮书V2.0PDF
获取以上完整鸿蒙HarmonyOS学习资料,请点击→
纯血版全套鸿蒙HarmonyOS学习资料
总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。