uclibc和glibc的差别

简介: <div><span>uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题。<br><br> 1. uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编译应用程序比采用Glibc编译应用程序要更方便,但是uClibc并没有包括Glibc中的所有接口实现,因此有些应用可能在uClibc中不能编译。<br
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接口、全部的时钟接口和共享内存接口(仅仅实现定时器接口和消息队列接口)
相关文章
|
API 数据安全/隐私保护
如何使用Postman 测试Https 网站?
大家好,我是阿萨。 昨天我们学习了Postman 导入导出API 的用法。针对日常工作测试工作的最基本用法就介绍完了。
1695 0
如何使用Postman 测试Https 网站?
|
9月前
|
人工智能 自然语言处理 JavaScript
高产似母猪! AI+低代码引擎发布 0.13.15: 全面支持国际化
VTJ.PRO发布v0.13.15版本,新增对vue-i18n国际化的深度集成,支持多语言可视化管理、动态绑定及实时预览切换,全面构建企业级应用核心能力。此前已支持全局配置、Swagger API一键导入等功能,助力开发者高效构建现代化、国际化企业应用。项目秉持“降低复杂度,不降低自由度”理念,基于Vite + Vue 3 + TypeScript现代开发栈,提升开发效率与协作体验。未来将加强AI辅助开发能力,探索自然语言生成组件与页面的可能。开源地址:https://gitee.com/newgateway/vtj,立即体验:https://vtj.pro。
302 6
|
算法 Linux C++
【Linux系统编程】深入理解Linux中的chmod函数和mode_t类型
【Linux系统编程】深入理解Linux中的chmod函数和mode_t类型
758 0
|
运维 Shell Go
构建 Go 应用 docker 镜像的十八种姿势
构建 Go 应用 docker 镜像的十八种姿势
|
JavaScript 前端开发 UED
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
【8月更文挑战第30天】在Vue.js中,动画与过渡效果不仅是视觉点缀,更是提升用户体验的关键。通过流畅的动态效果,应用的互动性和吸引力得以增强,从而提高用户满意度和参与度。`&lt;transition&gt;`和`&lt;transition-group&gt;`组件结合CSS过渡,可轻松实现元素的进入、离开及列表变化动画。合理的性能优化,如使用硬件加速,能避免页面卡顿,确保动画既美观又高效。下面是一个简单的淡入淡出效果示例,展示了如何利用Vue.js实现平滑的动画过渡。总之,恰当的动画设计能显著提升应用的用户体验。
434 0
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
|
人工智能 运维 监控
智能运维在现代数据中心的应用与挑战
随着云计算和大数据技术的迅猛发展,现代数据中心的运维管理面临着前所未有的挑战。本文探讨了智能运维技术在数据中心中的应用,包括自动化监控、故障预测与诊断、资源优化等方面,并分析了当前面临的主要挑战,如数据安全、系统集成复杂性等。通过实际案例分析,展示了智能运维如何帮助数据中心提高效率、降低成本,并提出了未来发展趋势和建议。
|
安全 Linux 网络安全
自学黑客(网络安全)
【7月更文挑战第18天】
712 5
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
微信小程序实现上传视频 / 上传图片功能以及整合上传视频 / 上传图片功能(超详细)
|
数据库 数据安全/隐私保护 索引
Gorm学习(五)进阶:多态关联、关联标签以及事务
出现需要外键引用多个表的情况,不可能删除原来表结构,重新添加一个外键ID再建表,所以我们可以建立一个交叉表。让Addres不再依赖于User表或者Order表。
1355 1
Gorm学习(五)进阶:多态关联、关联标签以及事务
|
JSON Java 编译器
告别BeanUtils,Mapstruct从入门到精通
如果你现在还在使用BeanUtils,看了本文,也会像我一样,从此改用Mapstruct。
1510 0
告别BeanUtils,Mapstruct从入门到精通