关于Redlib、Newlib和NewlibNano的介绍

1、Redlib

  NXP自己的(非GNU) ISO C90标准C库,带有一些C99扩展(MCUXpresso IDE默认将在C项目中使用Redlib库)。如果你需要更小的应用程序规模,并且不需要C99或C++库的额外功能,建议使用Redlib,它通常可以生成更小的应用程序。

  虽然Redlib基本上是一个C90标准的C库,但它实现了许多扩展,包括一些来自C99规范的扩展:

  • 单精度数学函数:提供了一些math.h函数(如sinf()和cosf())的单精度实现。
  • stdbool.h:提供了C99 stdbool .h头的实现。
  • itoa:itoa()是一个非标准库函数,许多其他工具链都提供了它来将整数转换为字符串。为了方便移植,提供了这个函数的实现,可以通过stdlib.h访问。

2、Newlib和NewlibNano

  Newlib 是GNU C / C++库。提供了完整的C99和C++库支持,但代价是应用程序中的代码尺寸更大(在某些情况下,要大得多)。

  NewlibNano是为嵌入式而优化的GNU C/ C++库的一个版本,与使用标准版本的Newlib相比,对于C和C++项目,使用NewlibNano可以极大地减少应用程序的大小。

  Newlib和NewlibNano对比:

  • NewlibNano对大小进行了优化。
  • printf和scanf家族的例程已经在NewlibNano中重新实现,以消除对浮点输入/输出处理代码的直接依赖。需要使用这些函数处理浮点值的项目现在必须在链接期间显式地请求该特性。
  • NewlibNano中的printf和scanf家族例程只支持C89标准中定义的转换说明符。这在小内存占用和完整功能格式化的输入/输出之间提供了良好的平衡。
  • NewlibNano删除了printf/scanf类例程(如iprintf/iscanf等)的冗余整数实现。这些函数现在作为标准例程的别名。
  • 在NewlibNano中,只有未写入的缓冲数据会在退出时刷新。打开的数据流不会关闭。
  • 在NewlibNano中,动态内存分配器被重新实现。

  

 

posted @ 2021-02-04 19:07  不要让自己太懒  阅读(532)  评论(0编辑  收藏  举报