我正在尝试交叉编译一个SSH服务器,以便使用newlib (因为操作系统使用基于newlib的lib )将其移植到自制的操作系统上。
我在使用RedHat Newlib时遇到了一些问题,我想知道是否可以用另一个库(例如uclibc)进行移植?
这个3 "libc“接口(libc、newlib和uclibc)之间有区别吗?
发布于 2015-12-23 11:10:35
glibc (glibc)包括ISO C、POSIX、System V和XPG接口。uClibc提供ISO C、POSIX和System V,而Newlib只提供ISO C。
虽然您可以移植其他库,但它们有特定的OS依赖项。除非您的操作系统本身符合POSIX,否则这可能是一个不切实际的前景。
即使使用Newlib,您也有责任适当地实现syscalls,以支持设备、文件系统和内存管理。
发布于 2015-12-23 11:03:37
主要的区别在于库的大小,uclibc和newlib都集中在嵌入式系统上,因此它们希望体积小、速度快,而glibc则专注于完整的功能。
因此,在嵌入式版本中可能没有所有函数,但是标准c接口在所有c++库中应该是相同的。数据类型可能不同,特别是结构中的字段名称通常不标准化。
https://stackoverflow.com/questions/34433976
复制相似问题