3 ms·
For reference, the C++ ABI is changing with every minor version of gcc, making compiled libraries like glibc or Qt incompatible. Major distro releases upgrade g
by user5994461 6y ago
For reference, the C++ ABI is changing with every minor version of gcc, making compiled libraries like glibc or Qt incompatible. Major distro releases upgrade gcc so all packages are incompatible.
I agree on compiling statically to avoid DLL hell. However it is fairly difficult in practice because software rarely document how to statically build them and they very often take dependency to some libraries on the system.
All it takes is one dynamic dependency to break (libstdc++ is not stable for example).
- laumars 6y ago> For reference, the C++ ABI is changing with every minor version of gcc, making compiled libraries like glibc or Qt incompatible. Major distro releases upgrade gcc so all packages are incompatible. It’s actually not as dramatic as that and you can still ship libc as a dependency of your project like I described if you really had to. It’s vaguely equivalent in that regard to a Docker container or chroot except you’re not sandboxing the applications running directory. This is something I’ve personally done many times on both Linux and a some UNIXes too (because I’ve had a binary but for various different reasons didn’t have access to the source or build tools). I’ve even run Linux ELFs on FreeBSD using a series of hacks, one of them being the above. Back before Docker and treating servers like cattle were a thing, us sysadmins would often have some highly creative solutions running on our pet servers. > I agree on compiling statically to avoid DLL hell. However it is fairly difficult in practice because software rarely document how to statically build them and they very often take dependency to some libraries on the system. All it takes is one dynamic dependency to break (libstdc++ is not stable for example). There are a couple of commonly used flags but usually reading through the Makefile or configure.sh would give the game away. It has been a while since my build pipelines required me to build the world from source but I don’t recall running into any issues I couldn’t resolve back when I did need to commonly compile stuff from source.
- PaulDavisThe1st 6y agothe gcc C++ ABI hasn't changed since v5 (or has changed in backwards-compatible ways). There was a small (but important) change between 4 and 5. Earlier versions did have much mor churn, but it's simply not true to say "every minor version of gcc" at this point.