Linux binary guides
Each guide starts from the exact error text, explains the mechanism that produced it, and gives the commands that confirm the diagnosis. No "just reinstall it" advice.
Troubleshooting an error message
6 guides- cannot execute binary file: Exec format error — causes and fixes Why Linux refuses to run a binary with Exec format error, how to confirm the cause in three commands, and the five fixes that actually apply.
- version `GLIBC_2.34' not found — why copying libc never works How glibc symbol versioning works, why a binary built on a newer distribution refuses to start on an older one, and the four legitimate fixes.
- wrong ELF class: ELFCLASS32 or ELFCLASS64 — what it means The 32-bit versus 64-bit mismatch that shows up at link time and at dlopen time, why it is not the same as Exec format error, and how to resolve it.
- error while loading shared libraries: cannot open shared object file How the dynamic loader searches for libraries, why a library can be installed and still not found, and the five fixes that work in order of preference.
- version `GLIBCXX_3.4.29' not found — the libstdc++ counterpart GLIBCXX errors come from libstdc++, not libc. Same shape as the GLIBC error, different fix, and a much shorter list of legitimate options.
- No such file or directory when the file is clearly there The most misleading error in Linux: the binary exists, is executable, and still refuses to start. The missing thing is the ELF interpreter.
How ELF and the loader work
3 guides- musl vs glibc: why an Alpine binary will not run on Ubuntu Both are C libraries; neither is compatible with the other's binaries. Here is how to tell which one a binary was built against, and what the misleading error message really means.
- Static vs dynamic linking: how to tell, and why a static build can still fail Two fields in the ELF header decide the answer, but 'static' is not a guarantee of portability — especially for glibc and for anything using NSS or dlopen.
- SONAME and library versioning: why libssl.so.3 is not libssl.so.1.1 What a SONAME actually is, how the loader uses it, and why the symlink that 'fixes' a missing library is the reason the program crashes later.
Working with binutils
1 guidesPractical checks
3 guides- How to tell whether a binary is stripped (and what it costs you) What strip removes, what it leaves behind, how to confirm it with file and readelf, and how to get usable stack traces back from a stripped production binary.
- How to check whether a binary is 32-bit or 64-bit (and for which CPU) Four commands that tell you the word size, instruction set and ABI of any executable — plus why file's one-line answer is sometimes all you need.
- How to check PIE, RELRO, NX and stack canaries without installing checksec Five readelf commands that reproduce a checksec report, what each field really proves, and the cases where the answer is misleading.