I've downloaded a game (Shank) but the bin file doesn't run. The error that is shown when I try to launch the executable is:
bash: ./shank-linux-120720110-1-bin: No such file or directory
I've downloaded a game (Shank) but the bin file doesn't run. The error that is shown when I try to launch the executable is:
bash: ./shank-linux-120720110-1-bin: No such file or directory
You're probably trying to run a 32-bit binary on a 64-bit system that doesn't have 32-bit support installed.
There are three cases where you can get the message “No such file or directory”:
file shank-linux-120720110-1-bin
displays something like “ELF 32-bit LSB executable …”), and yet when you try to execute it you're told that the file doesn't exist.The error message in this last case is admittedly confusing. What it's telling you is that a key component of the runtime environment necessary to run the program is missing. Unfortunately, the channel through which the error is reported only has room for the error code and not for this extra information that it's really the runtime environment that's to blame. If you want the technical version of this explanation, read Getting “Not found” message when running a 32-bit binary on a 64-bit system.
The
file
command will tell you just what this binary is. With a few exceptions, you can only run a binary for the processor architecture that your release of Ubuntu is for. The main exception is that you can run 32-bit (x86, a.k.a. IA32) binaries on 64-bit (amd64, a.k.a. x86_64) systems.In Ubuntu up to 11.04, to run a 32-bit binary on a 64-bit installation, you need to install the
ia32-libs
package . You may need to install additional libraries (you'll get an explicit error message if you do).Since 11.10 (oneiric) introduced multiarch support, you can still install
ia32-libs
, but you can choose a finer-grained approach, it's enough to getlibc6-i386
(plus any other necessary library).64 bit Ubuntu Multiarch systems
Follow this answer only if the output of
file file-name
shows,To run 32bit executable file in a 64 bit multi-arch Ubuntu system, you have to add
i386
architecture and also you have to installlibc6:i386
,libncurses5:i386
,libstdc++6:i386
these three library packages.To expand on @Gilles answer, there are at least three scenarios resulting in this error:
file
command works), making for a puzzling error message. This may mean there's a problem with the loader.Categories of loader problems:
An executable's loader does not exist. You can check this using the file command and see if the loader does exist. E.g.
Notice
interpreter /lib64/ld-lsb-x86-64.so.3
; if this file does not exist, you need to install it. For this particular loader on 16.04, the answer turned out to besudo apt-get install lsb
.Issues with a script's loader (see this answer).
ldd <file-name>
to check for any "not found" libraries. See this answer for more info.The loader not existing could be due to a 32/64 bit mismatch or some other reason. There might be other kinds of loader errors I don't know about.
Here's a transcript showing a bit more about the nature of the problem, and how to fix it as of Ubuntu 16.04. Notice that even though
file
reports "dynamically linked",ldd
reports "not a dynamic executable".Once you install libc6:i386, things start improving...
To complete the job, you may need to identify and install additional libraries one at a time...
I don't know if there is a systematic way of identifying the correct libraries to install. There is a bit of guesswork mapping the error messages to package names (tab completion helps).
By installing the deb for 32 bit I realized I was missing some libraries (in addition to ia32-libs and libc6). I first solved this problem by giving this command:
Then I got another error:
Obviously, these libraries were properly installed. Without going into details I had to link the libraries by hand. I realized then that could also an easier solution through Synaptic install the following packages:
After that the next problem was the black screen while playing, which I solved by replacing the executable in /Shank/bin with this: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar.bz2.
I hope it will be useful to someone. If you need more help or more details please feel free to contact me.
This error happens when working on Windows (which introduces extra characters because of different line separator than Linux system) and trying to run this script (with extra characters inserted) in Linux. The error message is misleading.
In Windows, the line separator is CRLF (\r\n) whereas in linux it is LF (\n). In my case, this happened due to working on Windows and uploading to Unix server for execution.
Google navigated me to this page. My issue was distantly related to the title of this thread, so I am posting it here for the future visitors like me:
It is one of the weirdest issues:
I see that the file
.~dataprep.ipynb
is right there with some weird??
permissions. I just wanted to get rid of that messed up file.rm
command could not remove it.mv
command couldn't move it.And then...
And that's how I was able to defeat it.
As posted in https://askubuntu.com/a/1035037/676490
solved the problem
None of the above answers worked for me because there was a miss-resolving for the interpreter.
I have written a detailed answer here, explaining how to fix this issue.
So, in a summary, you have to create a link of one of this interpreters to the inexistant interpreter path by running the following command in a terminal (Ctrl + Alt + T) :