zlacker

[return to "The state of binary compatibility on Linux and how to address it"]
1. sylwar+p1[view] [source] 2025-04-01 22:38:52
>>generi+(OP)
This article missed a critical point which is "the right way" to select a glibc ABI version: see binutils ld documentation, second part of the page related to VERSION support. This must include glibc internal symbols.

This will allow to craft ELF binaries on a modern distro which will run on "older" distros. This is critical for games and game engines. There is an significant upfront only-once work in order to select an "old" glibc ABI.

The quick and dirty alternative being having a toolchain configured to link with an "old" glibc on the side.

This article missed the -static-libstdc++ critical option for c++ applications (the c++ ABI is hell on earth), but did not miss the -static-libgcc and the dynamic loading of system interface shared libs.

◧◩
2. vlovic+88[view] [source] 2025-04-01 23:45:56
>>sylwar+p1
Which works if you use binutils ld. Does it work with mold or gold? And then how do you use this with languages other than c++/c like Go or Rust?
◧◩◪
3. sylwar+3Z[view] [source] 2025-04-02 11:53:26
>>vlovic+88
Rust toolchain has already a bug since 2015: it cannot link statically libgcc, namely it does not have "-static-libgcc" option since 2015.

I got the bug with "TinyGlade" video game (extremely good BTW), which is written in rust, and with the dev we hit that bug. Namely... better have a libgcc with the right ABI... and I can tell you, this has a been a HUGE issue since valve started to distribute games more than a decade ago.

◧◩◪◨
4. vlovic+Os1[view] [source] 2025-04-02 15:10:47
>>sylwar+3Z
As in you have to build on an old distro? Or something else?
[go to top]