我正在尝试使用newlib交叉编译SSH服务器以在自制操作系统上移植它(因为操作系统使用的是基于newlib的lib)。
我遇到了RedHat Newlib的麻烦,我想知道我是否可以使用其他库(例如uclibc)进行移植?
这3个“libc”接口(libc,newlib和uclibc)之间是否存在差异?
答案 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库中应该是相同的。数据类型可能不同,特别是结构中字段的名称通常不是标准化的。