libc,newlib和uclibc接口之间​​有区别吗?

时间:2015-12-23 10:50:14

标签: c compilation cross-platform newlib

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

我遇到了RedHat Newlib的麻烦,我想知道我是否可以使用其他库(例如uclibc)进行移植?

这3个“libc”接口(libc,newlib和uclibc)之间是否存在差异?

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

主要区别在于库的大小,uclibc和newlib专注于嵌入式系统,所以他们希望小而快,而glibc则专注于全功能。

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