bash: ./program: kan ikke kjøre binærfil: Exec-formatfeil

Jeg prøver å kjøre et program, men det oppstår en feil som dette:

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

Resultatet av file program var:

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

Hvordan kan jeg rette denne feilen?

Jeg bruker Ubuntu 14.04.2 (amd64) med VMware. Jeg prøvde også med Ubuntu i386, men resultatet var det samme.

Du prøver å kjøre en kjørbar fil som er kompilert for en ARM-arkitektur, på en x86-64-arkitektur, noe som er omtrent som å be en prosessor som bare snakker engelsk, om å følge en veibeskrivelse på kinesisk.

Hvis du trenger å kjøre den kjørbare filen, har du to valg:

  1. Få tak i en x86-64-versjon av den kjørbare filen (på hvilken som helst måte; hvis du ikke får tak i en x86-64-versjon av den kjørbare filen, men du får tak i kildekoden, kan du prøve å rekompilere den på den virtuelle maskinen);

  2. Installer Ubuntu Server for ARM i stedet for Ubuntu 14.04.2 (amd64). Dette krever enten en fysisk maskin som kjører på en ARM-arkitektur eller en virtualiseringsprogramvare som kan emulere den.

Kommentarer (0)

Dette kan også skje hvis du prøver å kjøre en x86-64-kjørbar fil på en 32-biters plattform.

I ett tilfelle lastet jeg ned Visual Studio Code og forsøkte å kjøre det på Ubuntu-installasjonen min, men jeg var ikke klar over at jeg hadde installert 32-biters Ubuntu i denne VM-en. Jeg fikk denne feilen, men etter å ha lastet ned 32-bitersversjonen, kjørte den uten problemer.

Kommentarer (0)

En slik feil kan oppstå hvis alle følgende forhold er oppfylt:

  • Kjørbar er ikke en fil, men en lenke
  • Du kjører den inne i VM
  • Filen ligger i en delt mappe
  • Verten din er Windows.

Hvis du har filen, la oss si i et arkiv - prøv å pakke den ut i VM, i en katalog i den virtuelle stasjonen, ikke i en mappe som er tilordnet vertsmaskinens harddisk, for eksempel /myNewDir/.

Kommentarer (1)