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
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