
linux
可别把
linux内核与
linux发行版弄混了。
linux内核并不依赖libc,它主要负责硬件编程,仅依赖硬件,为上层应用提供管理硬件资源的能力。有了内核,上层应用就能只专注业务了。但上层应用要怎么开展业务?自然是要依靠内核提供的能力(系统调用)。不过,操作系统的内核版本众多,上层应用总不能直接基于系统调用进行编程吧?于是就有了libc。glibc是GNU
linux的libc,它依赖
linux内核,通过封装内核系统调用来实现libc功能,而且glibc仅用于
linux内核,并不支持其他内核。C库中的系统调用就是对内核系统调用的封装。另外,前面提到
linux内核没有libc,至于编译出的内核能够直接使用,那是因为编译环境是一个
linux发行版。在这个发行版里,除了
linux内核,还包含大量基础库(其中最核心的就是libc,要是没有libc,任何系统发行版都无法运行)以及各种各样的软件。其中一部分软件是
linux发行版在安装系统时就自带的。发行版也不是随意制作的,自己做个小玩意儿(网上有
linux from scratch教程)倒没什么,想带什么就带什么。但若是正规的发行版,就得考虑兼容性,起码要支持最基础的lsb标准,这个标准会说明一个
linux发行版需要携带哪些内容。以上只是简单说说,还有许多细节,这点文字难以阐述详尽,凑合看看吧。