7

我的问题是Linux内核是否包含libc.so.6?在谷歌搜索并浏览不同的链接后,我们发现libc.so.6, 不是 Linux 内核的一部分,因为内核在内核空间中实现了相同的库供自己使用。libc.so.6是一个用户空间库。但是,问题仍然存在,如果从“/lib”中删除 libc.so.6,它会崩溃,因为 Linux 的所有基本应用程序都会崩溃。

所以,剩下的基本问题是:

  1. Linux可以在没有的情况下运行libc.so.6吗?如果是,在哪里使用这样的实现?
  2. 谁提供libc.so.6?它仅由 Linux 发行版提供吗?
  3. Linux 内部是否支持线程?
4

2 回答 2

7
  1. 是的。例如,我可以用汇编语言编写一个不使用 libc 的应用程序。以下是一些示例:https ://stackoverflow.com/questions/284797/hello-world-in-less-than-20-bytes
  2. 在 Linux 上,glibc 是 libc 的常见实现:https ://www.gnu.org/software/libc/
  3. 是的。glibc 提供的线程选项是内核接口上的填充层。
于 2013-10-30T12:57:42.623 回答
3

Linux 可以在没有 libc.so.6 的情况下运行吗?如果是,这种情况在哪里?

使用选项编译代码-nostdlib不会使用标准库,

GCC告诉,

-nostdlib 链接时不要使用标准的系统启动文件或库。没有启动文件,只有您指定的库将传递给链接器。编译器可以生成对 memcmp、memset、memcpy 和 memmove 的调用。这些条目通常由 libc 中的条目解析。指定此选项时,应通过某些其他机制提供这些入口点。

检查网页以获得良好的 glibc 免费实施。

于 2013-10-30T13:16:06.437 回答