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 Embedded GLIBC是glibc的原创作组织FSF所(新)推出的glibc的一种变体,目的在于将glibc用于嵌入式系统。 EGLIBC的目标是:

  1. 保持源码和二进制级别的兼容,与Glibc 源代码架构和ABI层面兼容。如果真正实现了这个目标,那意味着你之前用glibc编译的程序可以直接用eglibc替换,而不需要重新编译。 这样就可以复用之前的很多的程序了。
  2. 降低(内存)资源占用/消耗
  3. 使更多的模块为可配置的(以实现按需裁剪不需要的模块)
  4. 提高对于交叉编译(cross-compilation)和交叉测试(cross-testing)的支持

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语言函数库:

  1. uClibc是嵌入式系统中用的,glibc是桌面系统用的
  2. eglibc也是嵌入式系统中用的,是glibc的嵌入式版本,和glibc在源码和二进制上兼容。

uclibc、eglibc、glibc、Musl-libc之间的区别和联系相关推荐

  1. glibc和musl libc的区别

    g++和gcc是GNU编译器集合中的两个组件,g++是GNU C++编译器,gcc是GNU C语言编译器.这两个编译器都使用glibc作为标准C库,glibc是GNU操作系统的标准C库,为支持C程序提 ...

  2. glibc 和 libc的区别

    glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 linux 下的 ANSI C 函数库: glibc 是 Linux 下的 GUN C 函数库. glibc是linux下 ...

  3. 理清gcc、libc、glibc、libc++、libstdc++的关系

    转载一篇好文:https://www.jianshu.com/p/a3c983edabd1 当你在Linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g ...

  4. Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别

    本文试图从直观角度,说明SCHED_RR调度策略和SCHED_OTHER调度策略之间的区别. 在Linux上,SCHED_OTHER和SCHED_NORMAL的意思相同,它们都是指的CFS调度策略,只 ...

  5. uclibc和glibc的差别

    有两种常用的libc库与uClinux的使用. UC - libc和uClibc的.他们有很大的不同,尽管他们相似的名称.下面是一个如何不同的快速概述. UC - libc的是uClinux的原始库. ...

  6. 动态库、静态库、运行时库、引入库之间的区别

    动态库.静态库.运行时库.引入库之间的区别 杂集.捡对口味的看看吧. 转自:http://lingualspark.blog.sohu.com/94785899.html 运行时库:Unix中一个典型 ...

  7. VC编译选项 /ML /MLd /MT /MTd /MD /MDd之间的区别

    VC编译选项 /ML /MLd /MT /MTd /MD /MDd之间的区别 VC编译选项 多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd) C ...

  8. Alpine镜像中not found引出的gnu libc和musl libc的争论

    在一个使用旧版的Oracle的JDK的Alpine版本的镜像时出现了问题,这篇文章作为后续的整理,以此为契机,简单介绍一下Alpine版本中的musl libc和gnu libc的设定. 事前准备 运 ...

  9. FPGA与ASIC:它们之间的区别以及使用哪一种?

    FPGA与ASIC:它们之间的区别以及使用哪一种? FPGA Vs ASIC: Differences Between Them And Which One To Use? VL82C486 Sing ...

最新文章

  1. 一文带你看懂Springboot核心功能及优缺点
  2. 学术期刊因投稿者并非双一流高校作者而拒稿引热议!这算学历歧视吗?
  3. 简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节。
  4. linux awk详解
  5. 自定义Cell的流程
  6. 抢答网页PHP,[抢答]抢答环节已结束,相关答案已封箱 - 薅羊毛(Coupon)版 - 北大未名BBS...
  7. Linux 汇编学习
  8. 诗与远方:无题(一)
  9. 关于结构体数据的读写
  10. redis下载与安装(windows版)
  11. 制作U盘启动盘 优启通
  12. 运放TL08系列,功放LM386,8欧姆的扬声器
  13. 2023年直播行业的困境是什么?未来有哪些发展趋势?
  14. 但总觉得明白了一点点什么
  15. 每天一例多线程[day18]-----ThreadPoolExecutor
  16. lisp 画sinx曲线_如何用CAD画正弦曲线????有lisp的最好。。。谢谢了
  17. centos7中ps显示的内容_值得收藏,史上最全Linux ps命令详解
  18. MATLAB Linear Analysis Tool 的bode图数据获取
  19. 九连环(“华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)网络同步赛)
  20. Fidder汉化版使用

热门文章

  1. 2011年安徽省公务员录用考试
  2. d3dx9_43.dll是什么文件、d3dx9_43.dll缺失的解决方法
  3. 用CSS画简陋的足球⚽
  4. nodejs微服务:单体架构与微服务架构
  5. 组件封装为mxp文件的方法
  6. 有货基于Kubernetes容器环境的持续交付实践
  7. 【JiyaChieng】(贰)CoreDump —— 崩溃前的自拍
  8. 开发常用命令(Mac版本)
  9. 体验管理|“以旧换新”重塑“家电和耐用品”低频的消费需求
  10. 记录一下到目前为止收到的offer