Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

If I run a binary compiled on a newer Linux distro on an older Linux distro, I may get an error like this:

error while loading shared libraries: requires glibc 2.5 or later dynamic linker

How can I check the version of the dynamic linker in a Linux system? Is it provided by a package? If so, what's the name of the package?

And 2 theoretical questions:

  • Is it possible to update the dynamic linker? (I don't think I'm going to do this but I just want to know)
  • Is it possible to use a dynamic linker outside of the system paths? (e.g. one that is compiled/installed by a unprivileged user)
share|improve this question
up vote 3 down vote accepted

The loader is provided by glibc. Look for /lib{,64}/ld-*.so. The number after the dash is the version of glibc that provides it. Updating glibc will provide a newer linker.

share|improve this answer
I see. If so, can I use an alternate linker by specifying LD_LIBRARY_PATH? – netvope Jun 3 '10 at 6:12
It's the loader that reads and processes the $LD_* variables in the first place. – Ignacio Vazquez-Abrams Jun 3 '10 at 6:39
I used a hex editor to change the hard-coded loader path from /lib64/ to a newer, and pointed LD_LIBRARY_PATH at a directory containing a newer Now the program runs happily :) – netvope Jun 4 '10 at 18:51
nice hack there! – sourcedelica Oct 24 '11 at 20:52

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.