'Getting the error: bash: (program): cannot execute binary file: Exec format error, on both 32-bit and 64-bit Windows

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


Solution 1:[1]

As indicated by file, your program is a Linux application so you can't run it on Windows. See

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:[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!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Joshua Wolff
Solution 2