glibc
glibc — the GNU C Library — is the C runtime nearly every Linux process is born into: started by Roland McGrath for the FSF in 1987–88 for the GNU system, then adopted by Linux distros in the mid-1990s as "glibc 2" after the community's libc4/libc5 fork was folded back upstream. Every printf, malloc, open wrapper, getpwnam, and DNS lookup in a normal binary goes through it — it is the library the kernel's syscall interface is dressed up in.[1]
What it provides
Three things anchor it: libc.so.6 — the shared library carrying ISO C + POSIX + GNU extensions; ld-linux-x86-64.so.2 — the dynamic loader that maps shared libraries at exec; and NSS — the Name Service Switch that lets /etc/passwd, LDAP, and systemd resolve through one getpwnam. Symbol versioning is its quiet superpower: a binary built against glibc 2.17 still runs against 2.42 because each symbol carries its version — which is also why binaries can't go backwards.[2]
The fork and the rivals
glibc's own history includes a fork-and-merge: Debian ran eglibc (2009–2014) over maintainer disputes before re-merging. Its rivals define its trade-offs: musl (Alpine, static linking — small and strict-POSIX), uClibc-ng (embedded), Google's Bionic (Android). The LFS build treats it as sacred ground — chapter 3's --with-glibc-version exists because the toolchain and libc pin each other; get that relationship wrong and nothing compiles twice.[3]
See also
- LFS Cross-Toolchain — the bootstrap that builds it
- C Toolchain — the pipeline it terminates
- Inside a Linux System — the loader at exec time
- Linux · Systemd · GNU