本文主要是介绍【ARM 嵌入式 编译系列 3.7 -- newlib 库文件与存根函数 stubs 详细介绍】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
请阅读【嵌入式开发学习必备专栏 之 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
的实现偏重于减少资源占用和提高效率,而不是最大化性能。 - 编译时间优化:可以在编译时进行优化,以适应特定的嵌入式系统需求。
这篇关于【ARM 嵌入式 编译系列 3.7 -- newlib 库文件与存根函数 stubs 详细介绍】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!