3

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
/home/rodrigo/t_fplayer
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?

Nicolas Kaiser
  • 165
  • 1
  • 4
  • 16
rodrigob
  • 133
  • 4
  • 1
    Run `$ file ./flashplayerdebugger` and see what `file` thinks it is. – EEAA Jul 09 '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 09 '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 09 '11 at 23:14

3 Answers3

6

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.

Douglas Leeder
  • 2,725
  • 18
  • 15
  • 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](http://archive.ubuntu.com/ubuntu/dists/), but I second the recommendation to upgrade to 10.04 LTS (lucid). – Gilles 'SO- stop being evil' Jul 09 '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 09 '11 at 23:13
  • @rodrigob Why don't you submit a patch to bash to that effect? – Douglas Leeder Jul 10 '11 at 08:09
2

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.

geekosaur
  • 7,025
  • 1
  • 19
  • 19
  • 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 'SO- stop being evil' Jul 09 '11 at 22:17
0

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.

rvs
  • 4,027
  • 1
  • 25
  • 30