Suppose that I have a program that relies on a newer glibc version that is not available in the system via packages. And it gives:
version `GLIBC_2.xxx' not found
One solution is compiling the binary with glibc statically.
The other solution that is derailed by many people as "not safe" goes in putting newer libc.so.6
instead of the one shipped by operating system.
How exactly this second solution is not safe or a bad idea, provided that libc.so.6
includes prior ABI endpoints?
E.g. if I run strings /usr/lib/libc.so.6 | grep --perl-regexp "^GLIBC_"
I can see a lot of those ABI versions like:
...
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
...
So if I'm overwriting with a newer libc.so.6
with additional glibc ABI versions inside it, how does it break older apps or leads system to breakage?
Or doesn't it...? :)