Bandau paleisti programą, bet įvyksta tokia klaida:
bash: ./program: cannot execute binary file: Exec format error
Programos failo
rezultatas buvo:
program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped
Kaip ištaisyti šią klaidą?
Naudoju Ubuntu 14.04.2 (amd64) su VMware. Taip pat bandžiau su Ubuntu i386, bet rezultatas buvo toks pat.
Bandote paleisti ARM architektūrai sukurtą vykdomąją bylą x86-64 architektūroje, o tai tas pats, kas prašyti savo procesoriaus, kuris moka tik anglų kalbą, kad jis duotų nurodymus kinų kalba.
Jei norite paleisti tą vykdomąją programą, turite dvi galimybes:
Gauti x86-64 vykdomosios programos versiją (bet kokiu būdu; jei negalite gauti x86-64 vykdomosios programos versijos, bet galite gauti jos išeities kodą, galite pabandyti ją perkompiliuoti virtualioje mašinoje);
Įdiekite Ubuntu Server for ARM vietoj Ubuntu 14.04.2 (amd64). Tam reikia arba fizinės mašinos su ARM architektūra, arba ją emuliuojančios virtualizavimo programinės įrangos.
Taip gali atsitikti ir bandant paleisti x86-64 vykdomąją programą 32 bitų platformoje.
Vienu konkrečiu atveju parsisiunčiau "Visual Studio Code" ir bandžiau ją paleisti savo "Ubuntu" instaliacijoje, tačiau nesupratau, kad šioje virtualioje mašinoje įdiegiau 32 bitų "Ubuntu". Gavau šią klaidą, bet atsisiuntus 32 bitų versiją, ji veikė be problemų.
Tokia klaida gali įvykti, jei visos toliau išvardytos sąlygos yra teisingos:
Jei tą failą gavote, tarkime, archyve, pabandykite jį išpakuoti virtualioje mašinoje, į kokį nors virtualiame diske esantį katalogą, o ne į aplanką, atvaizduotą į jūsų kompiuterio kietąjį diską, pavyzdžiui, /myNewDir/
.