请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】
文章目录
- newlib 库文件介绍
- 资源使用
- 平台支持
- 功能
- 性能
- 许可证
- 兼容性
 
- 系统调用函数介绍
- 系统调用存根 stubs 详细介绍
- 为什么需要系统调用存根(Stubs)?
- 常见的系统调用存根
- 如何实现系统调用存根
- 如何告知编译器使用自定义存根
 
- 存根函数 _write 与 printf 的关系
- _write 存根函数
- printf 函数
- 关系
- 举例
 
 
newlib 库文件介绍
newlib 是为嵌入式系统设计的一种 C 标准库实现,它特别适用于那些没有传统操作系统支持的系统。由于嵌入式系统的资源通常有限,newlib 着重于减少资源使用,同时提供了一组相对完整的 C 标准库函数。
相比于其它版本的标准库,例如 glibc(GNU C Library,用于大多数 Linux 发行版)或 uclibc(微型 C 库,针对嵌入式设备的资源节约替代品),newlib 有以下特点和差异:
资源使用
- 轻量级:newlib旨在占用尽可能少的 ROM 和 RAM 空间。
- 可定制性:可以根据需要编译和配置 newlib,以包含或排除特定的库功能,以进一步减少资源占用。
平台支持
- 跨平台:newlib支持多种处理器架构和硬件平台,尤其是 ARM 和其他常见的嵌入式处理器。
- 无需操作系统:newlib可用于没有完整操作系统的裸机(bare-metal)环境。
功能
-  简化的系统调用: newlib提供了系统调用的简化和存根实现(stub),允许用户根据其嵌入式系统的实际情况提供实现。
-  重定向支持: newlib允许重定向标准输入输出(如stdin、stdout和stderr)到用户定义的设备或文件,这在嵌入式系统中非常有用。
-  浮点支持: newlib提供了对浮点数操作的支持,尽管在资源受限的系统中可能会选择禁用以节约空间。
性能
- 针对小型系统优化:newlib的实现偏重于减少资源占用和提高效率,而不是最大化性能。
- 编译时间优化:可以在编译时进行优化,以适应特定的嵌入式系统需求。