How can I resolve the error "cannot execute binary file"?
Usually that error message means Linux doesn't recognize the file as a shell script or as an executable file.
Typically the cause is running an executable on the wrong architecture - if you try to run x86 executables on an ARM CPU, this message comes up.
/usr/bin/id get overwritten, possibly?
Try to run it using ./executablefilename instead of using sh executablefilename. It's not a shell script after all.
The problem is running a binary for a different processor architecture. You can use objdump (from binutils) to check architecture of binaries. You can use uname to check architecture of a machine.
e.g. I encountered this error "cannot execute binary file" when installing FF.Communicator - a firefox plugin for chrome (so I can run pages that use java applets).
- objdump shows the binary is 64-bit elf64-x86-64
uname shows my machine is 32-bit i686
$ ./FF.Communicator bash: ./FF.Communicator: cannot execute binary file $ uname -mpio i686 i686 i386 GNU/Linux $ objdump -a ./FF.Communicator ./FF.Communicator: file format elf64-x86-64 ./FF.Communicator
objdump on a working binary on my machine shows it is 32-bit elf32-i386
$ objdump -a /bin/ls /bin/ls: file format elf32-i386
Using these tools you can check architectures of machines and binaries - not just intel architectures but any processor.
For Mac OSX users, you can find out the architecture info of a specific file using the "file" command:
$ file filename_here