| ▲ | amelius 19 hours ago | |||||||||||||||||||||||||||||||||||||||||||
Can't we just freeze glibc, at least from an API version perspective? | ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | johncolanduoni 16 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||
We definitely can, because almost every other POSIX libc doesn’t have symbol versioning (or MSVC-style multi-version support). It’s not like the behavior of “open” changes radically all the time, and you need to know exactly what source symbol it linked against. It’s really just an artifact of decisions from decades ago, and the cure is way worse than the disease. | ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | duped 16 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||
The problem is not the APIs, it's symbol versions. You will routinely get loader errors when running software compiled against a newer glibc than what a system provides, even if the caller does not use any "new" APIs. glibc-based toolchains are ultimately missing a GLIBC_MIN_DEPLOYMENT_TARGET definition that gets passed to the linker so it knows which minimum version of glibc your software supports, similar to how Apple's toolchain lets you target older MacOS from a newer toolchain. | ||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||
| ▲ | boredatoms 18 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||
Or just pre-install all the versions on each distro and pick the right one at load-time | ||||||||||||||||||||||||||||||||||||||||||||