Possible Duplicate:
Getting “Not found” message when running a 32-bit binary on a 64-bit system

Ok I feel like I'm having some sort of brain fade moment, please help me out.

I just installed Unreal Tournament on my Linux Mint Debian Edition OS. The startup script was complaining about a missing file so I decided to check it out manually.

~/Desktop $ ut
/usr/local/bin/ut: 78: ./ut-bin: not found
~/Desktop $ cd /usr/local/games/ut/System/
/usr/local/games/ut/System $ ls -l ut-bin 
-rwxrwxr-x 1 root staff 91336 Jan 28 11:33 ut-bin
/usr/local/games/ut/System $ ./ut-bin 
bash: ./ut-bin: No such file or directory

ut-bin is a binary executable according to the file command. Why is bash complaining about a missing file? I tried executing it in another shell and got a similar error. I also launched a new terminal with no change.

What am I missing here?

marked as duplicate by Gilles, Michael Mrozek Feb 2 '12 at 19:00

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 4
    Similar question yesterday, missing ia-32 libs. – bsd Jan 28 '12 at 17:19
  • 1
    I installed the ia32-libs package and it now executes. Couldn't bash return something like "invalid executable format"? I knew this had to be something stupid, like missing 32-bit libraries on new system install, but what a terrible error message for this situation. – Mr. Shickadance Jan 28 '12 at 17:35
  • 1
    @Mr.Shickadance: Actually, bash can't do anything about it (except guessing, which would be even worse). On Linux, execve(2) returns ENOENT when the file filename or a script or ELF interpreter does not exist, or a shared library needed for file or interpreter cannot be found. So the proper place to fix this would be the execve system call, not bash. – Ansgar Esztermann Jan 30 '12 at 10:46

As already explained, it happened because of missing 32-bit libraries. As a followup, if you encounter the problem, you might want to have a look at the output of file:

runejuhl@lapaz:~/opt/maple/maple15/bin.X86_64_LINUX$ file cmaple 
cmaple: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, stripped
runejuhl@lapaz:~/opt/maple/maple15/bin.X86_64_LINUX$ file lmutilv95 
lmutilv95: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped

From the output above, it's apparent that the former executable is built for a 64-bit system, while the latter is built for an x86 system.

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