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

19,538

Solution 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

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!

Share:
19,538
Leila
Author by

Leila

Updated on June 04, 2022

Comments

  • Leila
    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
      shellter about 3 years
      Edit your Q to show the output of uname -srv . Good luck.
    • Aserre
      Aserre about 3 years
      What terminal emulator are you runing ? WSL (1 or 2 ?) ? CygWin ? Something else ?
    • Leila
      Leila about 3 years
      I'm using Git bash. @Aserre
    • Leila
      Leila about 3 years
      Tried it with CygWin, and got the same result.
    • phuclv
      phuclv about 3 years
      @Leila cygwin isn't a Linux environment either. Cygwin binaries are native Windows binaries
  • Leila
    Leila about 3 years
    That's a thorough explanation and made me realize where the issue lies. Thank you.