3 ms·
The kernel ABI is very stable, but applications typically need to interact with parts of the operating system besides the kernel, and those parts are not as fan
by agwa 4y ago
The kernel ABI is very stable, but applications typically need to interact with parts of the operating system besides the kernel, and those parts are not as fanatical when it comes to providing stable interfaces.
For example, applications that need to do hostname and username resolution have to interface with NSS, and that breaks if you statically link glibc.
Another example is playing audio - this requires interfacing with some userspace audio system like JACK, PulseAudio, or now Pipewire. If you statically link libSDL, it won't work in 5-10 years with whatever the latest fad in audio playback is. But if you dynamically link libSDL, then you can't statically link glibc because libSDL may be linked with a newer version of glibc, causing a conflict.
Thus you end up with a quite a mess.
- phibz 4y agoIt is possible to statically link everything except for libnss and link it dynamically. I used this trick to create recovery shells on Solaris back in the day that didnt need /usr mounted. Same thing worked on Linux from what I recall.