Newlib
Newlib是一个为嵌入式系统编写的完整的C库实现。它是一个单独的开源项目,不包含在源代码形式中。相反,ZephyrSDK为每个受支持的体系结构(libc.a和libm.a)都包含了一个预编译的库。
注意:
其他的第三方工具链,如GNUArm嵌入式工具链,也捆绑了Newlib作为一个预编译的库。
Zephyr实现了由Newlib中的C标准库函数调用的“API钩子”函数。这些钩子函数是在lib/libc/newlib/libc-hooks.c中实现的,并将库的内部系统调用转换为等效的ZephyrAPI调用。
Newlib类型
ZephyrSDK中包含的新库有两个版本:“完整的”和“nano的”变体。
完整的Newlib
Newlib完整变体(libc.a和libm.a)是ZephyrSDK中Newlib最强大的变体,支持几乎所有标准C库特性。它对性能进行了优化(更喜欢性能而不是代码大小),它的占用空间比nano变体大得多。
可以通过选择CONFIG_NEWLIB_LIBC并在应用程序配置文件中取消选择CONFIG_NEWLIB_LIBC_NANO来启用此变体。
Nano Newlib
Newlibnano变体(libc_nano.a和li