4

我正在尝试使用 newlib 交叉编译 SSH 服务器以将其移植到自制操作系统上(因为操作系统使用基于 newlib 的库)。

我在使用 RedHat Newlib 时遇到了一些问题,我想知道是否可以使用另一个库(例如 uclibc)进行移植?

这 3 个“libc”接口(libc、newlib 和 uclibc)之间有区别吗?

4

2 回答 2

10

GNU libc (glibc) 包括 ISO C、POSIX、System V 和 XPG 接口。uClibc 提供 ISO C、POSIX 和 System V,而 Newlib 仅提供 ISO C。

虽然您可能能够移植其他库,但它们具有特定的操作系统依赖性。除非您的操作系统本身是 POSIX 兼容的,否则这可能是一个不切实际的前景。

即使使用 Newlib,您也有责任适当地实现系统调用以支持设备、文件系统和内存管理。

于 2015-12-23T11:10:35.010 回答
1

主要区别在于库的大小,uclibc 和 newlib 专注于嵌入式系统,因此它们希望小而快,而 glibc 专注于完整的功能。

所以基本上嵌入式版本中可能没有所有功能,但标准c接口在所有c库中应该是相同的。数据类型可能不同,尤其是结构中的字段名称通常不是标准化的。

于 2015-12-23T11:03:37.057 回答