| ▲ | duped 16 hours ago | |||||||||||||
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. | ||||||||||||||
| ▲ | jhasse 2 hours ago | parent | next [-] | |||||||||||||
That's exactly what apgcc from Autopackage provided (20 years ago). https://github.com/DeaDBeeF-Player/apbuild But compiling in a container is easier and also solves other problems. | ||||||||||||||
| ▲ | amelius 15 hours ago | parent | prev | next [-] | |||||||||||||
Yes, so that's why freezing the glibc symbol versions would help. If everybody uses the same version, you cannot get conflicts (at least after it has rippled through and everybody is on the same version). The downside is that we can't add anything new to glibc, but I'd say given all the trouble it produces, that's worth accepting. We can still add bugfixes and security fixes to glibc, we just don't change the APIs of the symbols. | ||||||||||||||
| ||||||||||||||
| ▲ | Y_Y 15 hours ago | parent | prev [-] | |||||||||||||
In principle you can patch your binary to accept the old local version, though I don't remember ever getting it to work right. Anyway here it is for the brave or foolhardy, here's the gist: | ||||||||||||||
| ||||||||||||||