Programming Languages - Standard Libraries
C Standard Libraries
glibc: GNU's implementation of C Standard Library.
musla lightweight implementation, used by Alpine Linux;
Bionic: developed by Google for its Android operating system, designed for devices with less memory and processor power than a typical Linux system (Three-clause BSD)
llvm-libc: static linking friendly.
Main shared object:
glibc 2.34, most components that used to be in separate shared objects were intesgraded into the main libc object,
libpthread: the threading library.
libdl: the application interface for the dynamic linker
glibc follows the pioneering work of the musl C library, which provides absolutely everything (including the dynamic linker) in a single shared object.
glibc's license is not static linking friendly.
$ ldd --version
musl is an implementation of the C standard library built on top of the Linux system call API, including interfaces defined in the base language standard, POSIX, and widely agreed-upon extensions.
musl is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety.
musl shows, it is theoretically possible to provide the entire C library through the dynamic linker.
Static linking friendly (the executable does not depend on any dynamically loaded shared library). Compiler driven security mitigations can be quickly applied to the entire executable by just rebuilding the application.
- statically linking
glibchas license implications.
muslare sanitizer unfriendly: they cannot be built with sanitizers enabled.
klibc is a minimalistic subset of the standard C library, developed mainly to be used during the Linux startup process.