My question is whether Linux kernel contains libc.so.6? After googling and going through different links, we found that libc.so.6, is not a part of Linux kernel, as the kernel has same libraries implemented for its own use in kernel space. libc.so.6 is a userspace library. But, still, the question was left, if the libc.so.6 is removed from "/lib", it crashes, as all the basic applications of Linux crashes.
So, the basic questions were left on:
- Can Linux run without
libc.so.6? If yes, where such implementation is used? - Who provides
libc.so.6? Is it provided by Linux distributions only? - Does Linux internally supports threading or not?
- Yes. For example, I could write an application in assembly that did not use libc. Here are some examples: https://stackoverflow.com/questions/284797/hello-world-in-less-than-20-bytes
- On Linux, glibc is a common implementation of libc: https://www.gnu.org/software/libc/
- Yes. The threading options that glibc provides are a shim layer over a kernel interface.
Can Linux run without libc.so.6? If yes, where is this the case?
Compiling the code with option -nostdlib won't use standard libraries,
man GCC tells,
-nostdlib Do not use the standard system startup files or libraries when linking. No startup files and only the libraries you specify will be passed to the linker. The compiler may generate calls to memcmp, memset, memcpy and memmove. These entries are usually resolved by entries in libc. These entry points should be supplied through some other mechanism when this option is specified.
Check webpage for good glibc free implementation.
来源:https://stackoverflow.com/questions/19682782/relevance-of-libc-so-6-in-linux-kernel