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的特点:
(1)uClibc比glibc要小很多。
(2)uClibc是独立的,为了应用于嵌入式系统中,完全重新实现出来的。和glibc在源码结构和二进制上,都不兼容。

3.EGLIBC
EGLIBC = Embedded GLIBC
EGLIBC是,(后来)glibc的原创作组织FSF所(新)推出的,glibc的一种变体,目的在于将glibc用于嵌入式系统。
EGLIBC的目标是:
(1)保持源码和二进制级别的兼容于Glibc
源代码架构和ABI层面兼容
如果真正实现了这个目标,那意味着,你之前用glibc编译的程序,可以直接用eglibc替换,而不需要重新编译。
这样就可以复用之前的很多的程序了。
(2)降低(内存)资源占用/消耗
(3)使更多的模块为可配置的(以实现按需裁剪不需要的模块)
(4)提高对于交叉编译(cross-compilation)和交叉测试(cross-testing)的支持

Eglibc的最主要特点就是可配置,这样对于嵌入式系统中,你所不需要的模块,比如NIS,locale等,就可以裁剪掉,不把其编译到库中,使得降低生成的库的大小了。
更多特点,可以去看: Eglibc的特点

【glibc, uClibc, Elibc的渊源/历史/区别/联系】
1. 写程序,需要用到很多c语言的库函数。所有的库函数加起来,就是对应的C语言(标准)函数库。
2. 目前在普通GNU/Linux系统中所用的C语言标准库,叫做glibc。其功能很全,函数很多,但是代码太多,编译出来的函数库的大小也很大,即资源占用也很多。
3. 而嵌入式系统中,也需要C语言写代码实现特定功能,也需要用到C语言函数库,但是由于嵌入式系统中,一般资源比较有限,所以不适合直接使用(太占用资源的)gLibc。
4. 所以有人就又(没有参考glibc,而是从头开始,)重新实现了一个用于嵌入式系统中的,代码量不是很大的,资源占用相对较少的,C语言函数库,叫做uClibc。并且,uClibc不支持MMU(内存管理单元)。
5. 而后来,glibc的开发者,又推出个Embedded glibc,简称eglibc,其主要目的也是将glibc用于嵌入式领域。
相应最大的改动就在于,把更多的库函数,改为可配置的,这样,如果你的嵌入式系统中不需要某些函数,就可以裁剪掉,不把该函数编译到你的eglibc库中,使得最终生成的eglibc库的大小变小,最终符合你的嵌入式系统的要求(不能超过一定的大小),这样,就实现了,把glibc引用于嵌入式系统中的目的了。

可以简单的理解为:
glibc,uClibc,eglibc都是C语言函数库:
1. uClibc是嵌入式系统中用的,glibc是桌面系统用的
2. eglibc也是嵌入式系统中用的,是glibc的嵌入式版本,和glibc在源码和二进制上兼容。

glibc、uclibc的区别相关推荐

  1. linux程序 都用libc,uClinux的通用c库:uC-libc和uClibc的区别概述

    uClinux的通用c库:uC-libc和uClibc的区别概述 (2006-09-13 19:49:04) uClinux通常使用两种c库:uC-libc和uClibc.尽管它们名字近似,但有很大区 ...

  2. C 函数库 (libc,glibc,uClibc,newlib)

    glibc glibc和libc都是Linux下的C函数库,libc是Linux下的ANSI C的函数库:glibc是Linux下的GUN C的函数库:GNU C是一种ANSI C的扩展实现.ANSI ...

  3. Glibc 和 uClibc的区别

    Glibc 和 uClibc 最近在搞mips openwrt框架的东西,mipc的GCC工具链为mipsel-openwrt-linux-gcc,所依赖的libc库为:mipsel-openwrt- ...

  4. C/C++——C语言标准、C语言标准库、 C标准库实现glibc, uClibc, Elibc

    C语言标准 C语言作为一种常用的计算机开发语言,被用于各种领域,尤其是单片机与嵌入式的开发,在现阶段更有着无可替代的作用,我也经常会使用C语言进行各种开发,使用过程中我们经常会听说 GUN C .AN ...

  5. libc、glibc、uclibc

    文章目录 libc,glibc和libc关系 glibc.uclibc的区别 查看glibc版本 libc,glibc和libc关系 https://www.cnblogs.com/saolv/p/9 ...

  6. linux下./xx做了什么?

    一直都很好奇linux下./xx程序怎么执行起来的? 昨晚有个小伙伴简单分享了下,有了一个不成熟的认识: 在linux的shell中输入./可执行程序后,shell会fork出一个子进程来处理,进行一 ...

  7. linux rootfs制作

    http://blog.sina.com.cn/s/blog_6795385f01011ifg.html 作一个嵌入式Linux rootfs,并且实现 web 服务 1. 文件系统简介 •理论上说一 ...

  8. php5.6 交叉编译,Cross-compile - 龙芯开源社区

    ★ 龙芯交叉编译器 龙芯交叉编译器有gs464核版本和ls232核版本两类,其中gs464核版本适用于loongson3a/3b.loognson2h.loongson2k.ls232核版本适用于lo ...

  9. 图解linux32位平台下进程线程长什么样子

    目录 0.linux的进程线程 1.单线程的进程 2.多线程的进程 3 总结 3.1 公共之处 3.2 差异之处 4.好的图解文章推荐 4.1 深入理解linux内核中的栈 4.2 进程虚拟内存管理 ...

最新文章

  1. javascript jquery 获取select选中的值
  2. ai入门视频,亲测有效
  3. 【JBPM4】完成任务
  4. firefox input file宽度失效
  5. python的userlist_Python Collections.UserList用法及代码示例
  6. 计算机组装报告目录,计算机组装实验报告(共9篇).doc
  7. Java的反射 基础+简单复制对象实例
  8. Confluence 6 配置备份
  9. 央企:中国航天建设集团2022年毕业生招聘
  10. Android音频压缩方法
  11. 拼多多显示服务器有点问题,拼多多打不开网页怎么回事
  12. 摄氏度符号英文计算机语言,温度表示-摄氏度怎样用英文表示温度?给几个例子,好吗? 爱问知识人...
  13. sap crm button_如何安装SAP软件?
  14. 科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头
  15. 哪个主板可供选择?ATX,Micro-ATX还是Mini-ITX?
  16. NIPS大会最精彩一日:AlphaZero遭受质疑;史上第一场正式辩论与LeCun激情抗辩;元学习强化学习亮点复盘...
  17. 靠一碗面一年三轮融资受资本热捧,张拉拉真的高枕无忧?
  18. storyboard搭建项目_Swift - 使用storyboard创建表格视图(TableViewController)
  19. 计算机三级英语词汇,【2009年成人英语三级英语词汇短语表(M2)】- 环球网校...
  20. 对牛乱弹琴 | Playin' with IT

热门文章

  1. CString,string,char数组的转换
  2. jcaptcha maven
  3. 关于jstl在tomcat5和tomcat6的部署
  4. flask找不到css_Flask干货:访问数据库——Flask-SQLAlchemy初始化
  5. java tomcat原理图,浅谈tomcat工作原理
  6. 深度学习之基于Tensorflow2.0实现AlexNet网络
  7. Remove Extra One(思维)
  8. WSDM 2022 | 一种用于在线广告自动竞价的协作竞争多智能体框架
  9. 根据id删除localstorage数据_原生js利用localstorage实现简易TODO list应用
  10. 『设计模式』不看就亏了的设计模式总结