glibc和uclibc

1.说明

ANSI C是基本的C语言函数库,包含了C语言最基本的函数库。 1)glibc 是Linux下GNU C的函数库 常见的桌面和服务器GNC/Linux类的系统,都是用C语言标准库,其实现了常见的C库函数,支持多种系统平台,功能很全。 2)uclibc是一个小型C标准库,主要用于嵌入式linux。 uclibc比glibc小很多,它是独立的,为了应用于嵌入式系统,和glibc在源码结构和二进制上,都不兼容。

2.差异说明

2.1)glibc 这是gnu发布的libc库,也是c运行库,主要提供了如下: string,字符串处理 signal,信号处理 dlfcn,管理共享库的动态加载 direct,文件目录操作 elf,共享库的动态加载器,也即interpreter iconv,不同字符集的编码转换 inet,socket接口的实现 intl,国际化,也即gettext的实现 io linuxthreads locale,本地化 login,虚拟终端设备的管理,及系统的安全访问 malloc,动态内存的分配与管理 nis stdlib,其它基本功能 2.2)uclibc 为嵌入式系统而生,虽然 uClibc 和 Glibc 在已有的接口上是兼容的,但是 uClibc 并没有包括Glibc 中的所有接口实现, 因此有些应用可能在 uClibc 中不能编译。

3.对比说明

1.程序,需要使用到很多的C语言的库函数,也就是标准C语言函数库 2.目前普通GNU/Linux系统中所使用的C语言标准库,叫glibc,功能很全, 但是代码太多,编译出来资源占用也很多。 3.glibc中malloc(0),将返回一个有效指针,而uclibc中malloc(0),则 返回NULL指针。在glic中malloc可以通过MALLOCCHECK 环境变量调节, 进而达到调试作用,而uclibc中是不可用的。当然实际使用中,Linux上有 许多malloc调试功能的库(例如:dmalloc, eletric fence, valgrind等), 这个比glic中扩展的malloc好用。