bash: ./program: kan binair bestand niet uitvoeren: Exec format error

Ik probeer een programma te draaien, maar er treedt een fout op zoals deze:

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

Het resultaat van file program was:

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

Hoe kan ik deze fout herstellen?

Ik'm gebruik Ubuntu 14.04.2 (amd64) met VMware. Ik heb het ook geprobeerd met Ubuntu i386, maar het resultaat was hetzelfde.

U probeert een uitvoerbaar programma, gecompileerd voor een ARM architectuur, uit te voeren op een x86-64 architectuur, wat net zoiets is als uw processor die alleen Engels spreekt, vragen de weg in het Chinees op te nemen.

Als u dat uitvoerbare programma wilt uitvoeren, hebt u twee keuzes:

  1. Verkrijg een x86-64 versie van het uitvoerbare bestand (op welke manier dan ook; als je'niet in staat bent om een x86-64 versie van het uitvoerbare bestand te krijgen, maar je'wel in staat bent om de broncode ervan te krijgen, kun je proberen het opnieuw te compileren op de virtuele machine);

  2. Installeer Ubuntu Server voor ARM in plaats van Ubuntu 14.04.2 (amd64). Dit vereist ofwel een fysieke machine die draait op een ARM architectuur of een virtualisatie software die het kan emuleren.

Commentaren (0)

Dit kan ook gebeuren als u probeert een x86-64 uitvoerbaar bestand uit te voeren op een 32-bit platform.

In een specifiek geval heb ik Visual Studio Code gedownload en geprobeerd het op mijn Ubuntu-installatie uit te voeren, maar ik had me niet gerealiseerd dat ik 32-bit Ubuntu in deze VM had geïnstalleerd. Ik kreeg deze foutmelding, maar na het downloaden van de 32-bits versie, draaide het zonder problemen.

Commentaren (0)

Een dergelijke fout kan zich voordoen als alle volgende waar zijn:

  • Executable is geen bestand maar een link
  • U voert het uit in een VM
  • Het bestand bevindt zich in een gedeelde map
  • Uw host is Windows.

Als je dat bestand hebt, laten we zeggen, in een archief - probeer het dan uit te pakken in de VM, in een map op de virtuele schijf, niet in een map op de harde schijf van je host machine, bijvoorbeeld /mijnNieuweDir/

Commentaren (1)