bash: ./program: não é possível executar o arquivo binário: erro no formato Exec

59

Estou tentando executar um programa, mas um erro acontece assim:

bash: ./program: cannot execute binary file: Exec format error

O resultado de file program foi:

program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped

Como posso corrigir esse erro?

Estou usando o Ubuntu 14.04.2 (amd64) com o VMware. Eu também tentei com o Ubuntu i386, mas o resultado foi o mesmo.

    
por Soongeun Hwang 15.07.2015 / 07:30

6 respostas

49

Você está tentando executar um executável compilado para uma arquitetura ARM em uma arquitetura x86-64, o que é muito parecido com perguntar ao seu processador que só fala inglês para obter instruções em chinês.

Se você precisar executar esse executável, você tem duas opções:

  1. Obtenha uma versão x86-64 do executável (por qualquer meio, se você não conseguir obter uma versão x86-64 do executável, mas conseguir obter seu código-fonte, tente recompile-o na máquina virtual);

  2. Instale o Ubuntu Server for ARM no lugar do Ubuntu 14.04.2 (amd64). Isso requer uma máquina física em execução em uma arquitetura ARM ou um software de virtualização que possa emulá-la.

por kos 15.07.2015 / 07:39
17

Isso também pode ocorrer se você tentar executar um executável x86-64 em uma plataforma de 32 bits.

Em uma instância específica, eu baixei o Visual Studio Code e tentei executá-lo na minha instalação do Ubuntu, mas não tinha percebido que havia instalado o Ubuntu de 32 bits nesta VM. Eu recebi esse erro, mas depois de baixar a versão de 32 bits, ele foi executado sem problemas.

    
por Hughie Coles 11.09.2015 / 01:44
5

Geralmente é possível executar uma imagem executável do ARM em um sistema amd64 se você instalar o binfmt-support , qemu e qemu-user-static < img src="https://hostmar.co/software-small"> packages:

sudo apt install binfmt-support qemu qemu-user-static

qemu executará a emulação syscall quando você executar o executável. Isso funciona para a maioria dos binários do ARM, mas há alguns que podem não ser executados corretamente.

    
por Nathan Osman 27.10.2016 / 08:41
5

Esse erro pode ocorrer se todos os itens a seguir forem verdadeiros:

  • Executável não é um arquivo, mas um link
  • Você executa a execução dentro da VM
  • O arquivo está localizado na pasta compartilhada
  • Seu host é o Windows.

Se você tiver esse arquivo, digamos, em archive - tente descompactá-lo dentro da VM, em algum diretório dentro da unidade virtual, não na pasta mapeada para o disco rígido da máquina host, por exemplo /myNewDir/

    
por Pavel 13.11.2015 / 23:22
1

Se mais de um java estiver instalado no sistema, isso pode acontecer e não ser definido como padrão. No Ubuntu14.04 LTS, eu consegui resolvê-lo executando e escolhendo o java que eu precisava.

sudo update-alternatives --config java
[sudo] password for user: 
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

Eu escolho 2 e defino openjdk-8 como padrão. Que não mostrou o Exec format error .

    
por lambzee 06.06.2016 / 15:43
0

Você deve compilar seu arquivo usando uma arquitetura de CPU apropriada (x86, por exemplo) e copiar o arquivo .exe na sua máquina linux. Então você pode instalar o mono em sua máquina linux e emitir o seguinte comando:

mono myprogram.exe
    
por user3578181 28.02.2016 / 20:49

Tags