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.
94
3
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:
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);
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.
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.
En slik feil kan oppstå hvis alle følgende forhold er oppfylt:
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/
.