1.Glibc glibc是GNU C Library 是GNU项目(GNU Project),所实现的 C语言标准库(C standard library)。 目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。 其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。
2.uClibc 一个小型的C语言标准库,主要用于嵌入式。其最开始设计用于uClinux(注:uClinux不支持MMU),因此比较适用于微处理器中。此处的u意思是μ,是Micro微小的意思。uClibc的特点:
3.EGLIBC Embedded GLIBC是glibc的原创作组织FSF所(新)推出的glibc的一种变体,目的在于将glibc用于嵌入式系统。 EGLIBC的目标是:
Eglibc的最主要特点就是可配置,这样对于嵌入式系统中,你所不需要的模块,比如NIS,locale等,就可以裁剪掉不把其编译到库中,使得降低生成的库的大小。
4. Musl-libc C语言标准库Musl-libc项目发布了1.0版。Musl是一个轻量级的C标准库,设计作为GNU C library (glibc)、 uClibc或Android Bionic的替代用于嵌入式操作系统和移动设备。它遵循POSIX 2008规格和 C99 标准,采用MIT许可证授权,使用Musl的Linux发行版和项目包括sabotage,bootstrap-linux,LightCube OS等等。
目前openwrt LEDE默认使用Musl-libc了。。。CC分支还是uclibc
1. 写程序,需要用到很多c语言的库函数。所有的库函数加起来,就是对应的C语言(标准)函数库。 目前在普通GNU/Linux系统中所用的C语言标准库,叫做glibc。其功能很全,函数很多,但是代码太多,编译出来的函数库的大小也很大,即资源占用也很多。 嵌入式系统中,也需要C语言写代码实现特定功能,也需要用到C语言函数库,但是由于嵌入式系统中,一般资源比较有限,所以不适合直接使用(太占用资源的)gLibc。 所以有人就又(没有参考glibc,而是从头开始,)重新实现了一个用于嵌入式系统中的,代码量不是很大的,资源占用相对较少的,C语言函数库,叫做uClibc,并且uClibc不支持MMU(内存管理单元)。而后来,glibc的开发者,又推出个Embedded glibc,简称eglibc,其主要目的也是将glibc用于嵌入式领域。相应最大的改动就在于,把更多的库函数,改为可配置的,这样,如果你的嵌入式系统中不需要某些函数,就可以裁剪掉,不把该函数编译到你的eglibc库中,使得最终生成的eglibc库的大小变小,最终符合你的嵌入式系统的要求(不能超过一定的大小),这样就实现了把glibc引用于嵌入式系统中的目的了。可以简单的理解为: glibc,uClibc,eglibc都是C语言函数库: