Getting the error: bash: (program): cannot execute binary file: Exec format error, on both 32-bit and 64-bit Windows
Solution 1
As indicated by file
, your program is a Linux application so you can't run it on Windows. See
- Why does a linux compiled program not work on Windows
- Why won't Windows EXE files work on Linux?
- Why do you need to recompile C/C++ for each OS?
Mingw is not an environment for running Linux executables, it's just a compiler that compiles POSIX code into native Windows binaries. Neither is Cygwin, which is a reimplementation of POSIX system calls in Windows, and Cygwin binaries are also native Windows binaries with a dependency on Cygwin DLLs. Read this if you want to know their differences. Bash is a shell and isn't a platform to execute files either. Only the runtime platform (OS or something like JVM or .NET CLR VM) can run programs and a shell is just a tool to interact with the OS
So you must run Linux programs in a Linux environment like a Linux machine or WSL1/2. Since the program is 32-bit, you can only run it in Linux or WSL2
Since you have the source code you can also compile the code with mingw or cygwin and run on Windows
Solution 2
Thanks to the answer provided by @phuclv, I realized I need to run the program in Linux. So, I installed 32-bit Linux (I used Linux Mint Debian Edition) on a virtual machine (VirtualBox) on my 64-bit Windows 10, and it worked!
Leila
Updated on June 04, 2022Comments
-
Leila almost 2 years
There is a program developed for linguistic research (http://people.csail.mit.edu/mcollins/code.html). When I try to run the parser using Git bash terminal on Windows, I get the error:
bash: cannot execute binary file: Exec format error.
First, I assumed it's because of my 64-bit OS, since the file is 32-bit. So, I tried the program on a 32-bit system, but got the same message.
Any ideas on how to fix the issue?:
file (program)
shows:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, with debug_info, not stripped
uname -srv
for my 64-bit OS, shows:MINGW64_NT-10.0-19042 3.1.7-340.x86_64 2021-03-26 22:17 UTC
uname -srv
for my 32-bit OS, shows:MINGW32_NT-6.1-7601 3.1.7-340.i686 2021-03-26 22:01 UTC
P.S.: If you'd like to give it a try, this code should work in the program directory, but it doesn't work for me:
gunzip -c models/model2/events.gz | code/parser examples/sec23.tagged models/model2/grammar 10000 1 1 1 1 > examples/sec23.model2
-
shellter about 3 yearsEdit your Q to show the output of
uname -srv
. Good luck. -
Aserre about 3 yearsWhat terminal emulator are you runing ? WSL (1 or 2 ?) ? CygWin ? Something else ?
-
Leila about 3 yearsI'm using Git bash. @Aserre
-
Leila about 3 yearsTried it with CygWin, and got the same result.
-
phuclv about 3 years@Leila cygwin isn't a Linux environment either. Cygwin binaries are native Windows binaries
-
-
Leila about 3 yearsThat's a thorough explanation and made me realize where the issue lies. Thank you.