Glibc 和 uClibc

最近在搞mips openwrt框架的东西,mipc的GCC工具链为mipsel-openwrt-linux-gcc,所依赖的libc库为:mipsel-openwrt-linux-uclibc-gcc,也就是uclic库,和通常用的glic是有一定区别的。

以下是从网上搜集的uClibc和Glibc的区别。

uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题.
   1.uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编译应用程序比采用Glibc编译应用程序要更方便,但是uClibc并没有包括Glibc中的所有接口实现,因此有些应用可能在uClibc中不能编译。
   2.uClibc在可配置性上比Glibc要好。
   3.uClibc并不能保证发布的库二进制兼容旧版本uClibc库。当一个新的版本uClibc库被发布,则可能需要也可能不需要重新编译应用程序。
   4.在Glibc中调用malloc(0),将返回一个有效的指针,然而在uClibc中调用malloc(0),则返回NULL指针。根据在SuSv3中关于malloc(0)的行为的定义,两个库的实现都是正确的。对于调用relloc(NULL,0),两个库的实现也不同。个人感觉Glibc的如此实现不是特别安全。
   Glibc中malloc的实现可以通过MALLOC_CHECK_ 环境变量调节。这个方法主要用于malloc调试。这些扩展的malloc调试特性在uClibc中是不可用的。在Linux上有许多有些的malloc调试功能的库(如:dmalloc,electric fence,valgrind等)比Glibc中的扩展的malloc调试功能更好用。因此uClibc中去掉这些功能特性并不会有多打损失。
   5.uClibc没有提供用于数据接口的库(libdb)。
   6.uClibc不支持NSS(/lib/libnss_*),在这方面Glibc更容易支持不同方式的认证和DNS解析。uClibc仅仅支持采用flat口令文件或者shadow口令文件存储授权信息。如果需要比这些更复杂的的授权,可以编译安装pam。
   7.uClibc中的libresolv库仅仅是一个桩。Glibc的libresolv库中的部分并不是全部的功能uClibc都提供,许多函数都没有实现。
   8.提供网络信息服务支持(NIS)libnsl库(最初被称为黄页YP),被SUN扩展为发明为RPC并用于网络共享Unix口令文件。个人认为NIS是一个令人厌恶的东西并应该使用。因此,在实现相同的功能情况下采用ldap比NIS更有效。uClibc虽然提供一个桩libnsl,但并不支持NIS。我们因此也不提供在Glibc下提供的位于/usr/include/rpcsvc里的头文件。
   9.uClibc的区域支持并不是100%的完全。正在这方面努力。

10.uClibc的数据功能函数库内部仅仅支持long double,设置对于long double的支持也是非常有限。与此对应的只实现了较少的数学函数。如果应用程序采用double类型,则会程序会运行得较好。
   11.uClibc的libcrpt库不支持可重入crypt_r,setkey_r和encrypt_r,因为这些也不是SuSv3所规定的。
   12.uClibc直接采用内核的数据类型去定义大多数透明的数据类型。
   13.uClibc支持采用linux内核结构特有的结构体"struct stat"。
   14.uClibc的运行时库librt当前缺少aio接口、全部的时钟接口和共享内存接口(仅仅实现定时器接口和消息队列接口)。

Glibc 和 uClibc的区别相关推荐

  1. glibc、uclibc的区别

    1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library). 目前,常见的桌面和服务器中的GNU ...

  2. libc、glibc、uclibc

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

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

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

  4. C函数库(libc、glibc、uClibc、newlib)

    libc.glibc.uClibc.newlib glibc和libc uClibc Newlib glibc和libc glibc和libc都是Linux下的C函数库,libc是Linux下的ANS ...

  5. glibc和ulibc的区别

    1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library). 目前,常见的桌面和服务器中的GNU ...

  6. glibc 和 libc的区别

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

  7. uclibc、eglibc、glibc、Musl-libc之间的区别和联系

    1.Glibc glibc是GNU C Library 是GNU项目(GNU Project),所实现的 C语言标准库(C standard library). 目前,常见的桌面和服务器中的GNU/L ...

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

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

  9. 标准库 uClibc

    简介 PC上常用的标准库glibc是一个非常宠大而完整的库,但是对于嵌入式系统来说,其体积显得过于大了一些:uClibc的提出就是为了解决这个问题. uClibc尽可能的兼容Glibc,大多数应用程序 ...

最新文章

  1. 第一章:Flask安装
  2. 海量数据处理(一) :位图与布隆过滤器的概念以及实现
  3. 64位linux并行计算大气模型效率优化研究,64位Linux并行计算大气模型效率优化研究...
  4. 物流配送系统设计java,ZigBee物流配送系统设计
  5. 用SQL语句操作数据
  6. 我看周马,以及3Q大战背后的社会问题
  7. MySQL-MMM架构部署
  8. 逻辑斯蒂回归和感知机模型、支持向量机模型对比
  9. E-prime 鼠标点击选择
  10. 偏微分方程的数值解(二): 一维状态空间的偏微分方程的 MATLAB 解法
  11. vue 使用代理(proxyTable)报错500
  12. JavaScript设计模式 - 适配器模式
  13. 是非人生 — 一个菜鸟程序员的5年职场路 第24节
  14. Python开发资源速查表
  15. shell和javaAPI两种方式创建hbase表并预分区
  16. php的bs_PHP能否做BS架构的开发?
  17. OSS产品Bucket分级的使用场景及注意事项
  18. CCS使用教程05:CCS8.0常用菜单
  19. 过节前的数据库系统检查
  20. 三、ArcGIS河网提取

热门文章

  1. enum 有什么好处_高新技术企业认定四个核心评分标准是什么?软著能加分吗?...
  2. 【STM32】【STM32CubeMX】STM32CubeMX的使用之二:外部中断
  3. Ajax 自动投注,ajax 服务器文本框自动填值
  4. 关于ioremap,request_mem_region
  5. intellij idea开发工具
  6. spring学习-ApplicationContext-spring上下文深入理解
  7. 类型和原生函数及类型转换(一)
  8. 3、Docker 基础安装和基础使用 二
  9. 什么是Shell、Shell脚本
  10. 深入java虚拟机(二) 对象的创建