I have a server machine with ubuntu 9.10. I am trying to put in place an executable, which turns out to be the latest flashplayer (debugger version).

Somehow the file appears as present and executable, but when launching it the console indicates that the files does not exist:

rodrigo@ns360773:~/t_fplayer$ pwd
rodrigo@ns360773:~/t_fplayer$ ls -lh
total 12M
-rwxr-xr-x 1 rodrigo rodrigo 12M 2011-07-09 11:35 flashplayerdebugger
rodrigo@ns360773:~/t_fplayer$ ./flashplayerdebugger
-bash: ./flashplayerdebugger: No such file or directory
rodrigo@ns360773:~/t_fplayer$ ldd flashplayerdebugger
       not a dynamic executable

using the same executable (copied via ssh) in my local machine works fine.

Any idea of what is going on? What can explain this behaviour?

Any idea how to fix this?

  • 1
    Run $ file ./flashplayerdebugger and see what file thinks it is. – EEAA Jul 9 '11 at 21:53
  • ~/t_fplayer$ file flashplayerdebugger flashplayerdebugger: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped – rodrigob Jul 9 '11 at 23:12
  • indeed this seems to be 64bits vs 32bits problem. Thanks for point this out. I am quite surprised by the error message. – rodrigob Jul 9 '11 at 23:14

Check the architecture: You'll get that message running an x86 binary on an AMD64 system if you don't have compatibility libraries installed.

Also Ubuntu 9.04 is no longer updated, so you might want to update it.

  • The package to install is ia32-libs (or at least libc6-i386 and whatever other libraries are required). Karmic is still available from archive.ubuntu.com, but I second the recommendation to upgrade to 10.04 LTS (lucid). – Gilles Jul 9 '11 at 22:21
  • How come that bash does not say "32 bits on a 64 bits machine" or something similar instead of the (very misleading) "no such file" ? – rodrigob Jul 9 '11 at 23:13
  • @rodrigob Why don't you submit a patch to bash to that effect? – Douglas Leeder Jul 10 '11 at 8:09

Static or dynamic, it still makes use of a dynamically-loaded "interpreter", which on Linux is usually named ld-linux.so.VERSION. If you have an executable which requires a version of the interpreter that isn't present, as when you try to use a newer binary on an old system, you will get that error because the interpreter isn't found. (And the error message is unfortunate but not fixable unless the kernel is extended with a better error reporting API; all the shell knows is that it got ENOENT in response to execve("./flashplayerdebugger", ...).) So my guess is you're trying to run a binary compiled for Ubuntu 11.x on your old server, and that's a lost cause — you will need to get one compiled for Ubuntu 9.10.

  • The interpreter version hasn't changed in ages. A binary compiled for Ubuntu 11.04 might fail due to missing libraries, but not due to a missing interpreter. Since the kernel recognized the binary format but the runtime system didn't, the most likely explanation is that this is an amd64 system which doesn't have the 32-bit runtime support installed. – Gilles Jul 9 '11 at 22:17

This is probably due to missing 32-bit environment. You could try to use strace to find what exacly is missing: strace ./flashplayerdebugger. You should see there some open()s for non-existent libs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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