【LBC】OpenHarmony啃论文俱乐部——glibc是如何上位的 原创

鸿蒙开发
发布于 2022-4-19 16:53
浏览
2收藏

本文出自啃论文团队LiteOs-A应用兼容性团队,liteos binary compatible简称LBC

1. libc的作用

内核是 Linux 系统的核心,但应用程序都不会直接与内核打交道,应用程序通过libc来操作内核,libc库负责为内核功能提供符合标准的接口。【LBC】OpenHarmony啃论文俱乐部——glibc是如何上位的-鸿蒙开发者社区

2.glic的起源

glibc是GNU发布的libc库,它是linux系统的api,封装了应用开发对内核层的访问和一些通用的函数。在早期,GNU开发的第一个应用是Emacs,后来开发人员意识到他们需要一些关键基础库来开发他们的系统。这时一个不到20岁的小伙子Roland McGrath出现了,他在 1987 年, 就开始开发 GNU C 库,这个库的目的是提供ANSI标准C库中所需要的功能;自由软件基金会(Free Software Foundation)声称,这个使命在1988年2月份“近乎完成”,此时linux还没有出现,Roland McGrath一直维护glibc项目直到2007年辞职。
【LBC】OpenHarmony啃论文俱乐部——glibc是如何上位的-鸿蒙开发者社区

3.linux对glibc的放弃

1991年linux成立之初就开始四处寻找libc库,而glibc完善的功能,又是gnu组织的项目,glibc理所当然的成为了linux的libc,但是他们认为glibc应该是一个单独为linux服务的项目,但这样做需要大量的工作以及对GNU 项目的管理风格的不习惯,很难完成这项工作并合并。因此,在 Linux 历史的早期,linux fork了glibc 库,针对Linux 版本的Linux libc单独发展维护并随 Linux 发行版一起发布。
这个版本的C运行库被维护了很多年,从版本2一直开发到版本5。如果你去看早期版本的Linux,会发现/lib目录下面有libc.so.5 这样的文件,这个文件就是第五个版本的Linux libc。Linux libc4 是最后一个版本使用 a.out 二进制格式,Linux libc 5 是第一个支持 ELF 二进制格式的版本。可以通过http://ftp.ntu.edu.tw/linux/libs/libc5/old/查看linux libc版本目录,linux libc的最终版本是5.4.46。

4. glibc的回归

虽然glibc没被放到linux一起维护,但glibc并没有放弃发展,此时的贡献者还主要是Roland McGrath,后来Ulrich Drepper在1995年开始加入,1997 年初看到了第一个 glibc 2.0 版本,当时大多数提交都是由 Ulrich Drepper进行的。
此时 Linux libc 得到了充分的维护,但是它的工作进展不是很快,glibc 2 在很多方面都遥遥领先于linux libc。最终Linux 团队决定切换回 glibc 库,放弃了linux libc 项目。自此glibc 从此成为大多数 Linux 发行版的标准 C 库。
glibc 大部分工作都是由 Ulrich Drepper 完成的。截止到2012年近 19,000 次提交中,超过 12,000 次是由 Ulrich Drepper 提交的。Ulrich Drepper 从来不以愿意服从他人而著称,他很快就成为 了glibc 的决策者。glibc的最新版本是2.35:【LBC】OpenHarmony啃论文俱乐部——glibc是如何上位的-鸿蒙开发者社区
可以通过网址https://ftp.gnu.org/gnu/glibc/查看,切换成glibc后,linux上的文件名改为了libc.so.6,可以通过如下命令查看版本:
info libc
ldd --version
/lib/i386-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libc.so.6
比如我的ubuntu上显示的版本为:
【LBC】OpenHarmony啃论文俱乐部——glibc是如何上位的-鸿蒙开发者社区
从glibc到linux libc再返回的glibc,被认为是一个错误的决定,参见Rick Moen 的邮件第6部分http://linuxmafia.com/faq/Licensing_and_Law/forking.html

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2022-4-19 17:08:56修改
4
收藏 2
回复
举报
回复
    相关推荐