Hvordan fikse 'kan ikke utføre binærfil: Exec-formatfeil' på Ubuntu
Selv om det ikke skal skje når du bruker de offisielle, apt-get-depotene, hvis du laster ned programvare fra Internett og kjører det, er det en sjanse for at du får se den fryktede bash: ./nameOfProgram: kan ikke utføre binærfil: Exec-formatfeil . Denne feilen, som vanligvis etterfølges av bash: ./nameOfProgram.sh: Tillatelse nektet eller noe lignende, indikerer at Ubuntu ikke kunne grensesnittet korrekt med binæret du lastet ned. Dette skyldes at mens det tilsynelatende er et gyldig Linux-binært, er det designet for et annet brikkesett enn kjernen din for tiden støtter.
De fleste som bruker Ubuntu, er på 32-biters eller 64-biters prosessorer basert på en standardarkitektur som Intel utgitt, uavhengig av hvem som faktisk lagde mikrochips. Det er viktig å huske at 64-bits prosessorer kan kjøre i 32-biters modus, så hvis du får denne feilen selv om du har en 64-bits prosessor, er det en sjanse for at du kjører en 32-biters versjon av Ubuntu. Noen få enkle kommandoer er alt som trengs for å fortelle hva din chip fungerer som.
Metode 1: Bruke kommandoen Arch
Hvis du ikke er kjent med typen mikroprosessor som du har installert på maskinen din, vil du først bruke kommandoen kommando fra kommandolinjen. Du ser bare en enkelt utgangslinje returnert til deg etter at du har kjørt denne kommandoen. I mange tilfeller vil du se i686, noe som betyr at du er på en 32-bits prosessor og derfor ikke kan kjøre x86_64 binærfiler. Hvis du i stedet ser amd64 eller noe lignende, så er du på en x86_64-prosessor, og skal i det minste teoretisk kunne kjøre flest 32-bits og 64-biters binærfiler. I motsetning til Microsoft Windows inneholder Ubuntu Linux faktisk de riktige verktøyene for å tillate brukere av 644-bits brikkesett å kjøre 16-biters Windows-programmer i operativsystemet i mange tilfeller også.
Disse betingelsene er fortsatt sanne selv om du ikke faktisk bruker den spesifikke mikrochipmodellen. For eksempel, i686 er hvordan Linux refererer til mange 32-bits prosessorer, selv om de egentlig ikke er Intel 80686 chips. Selv om du bruker 64-biters Intel-teknologi, kan Arch fortsatt koble prosessoren din til en AMD64-chip. Dette indikerer ikke en feil, og kan sikkert ignoreres. Du kan bruke katt / proc / cpuinfo eller mer / proc / cpuinfo for å finne ut nøyaktig hvilken type prosessor du bruker. Siden linjene i denne filen er lange, vil du kanskje trykke F11 før du utsteder den hvis du bruker et grafisk terminalvindu. Brukere av en virtuell konsoll, spesielt de som jobber med Ubuntu-serveren, trenger ikke å bekymre seg like mye.
Det kan hende du ser noen andre typer utdata, noe som kan begrense alternativene dine når det gjelder å kjøre programvare. Ubuntu støttet PowerPC-arkitekturen i lengst tid, som finnes i enkelte arbeidsstasjoner, så vel som mange klassiske Macintosh-maskiner og eldre OS X Macintosh-maskiner. Du kan faktisk finne Ubuntu repositories for disse arkitekturene, selv om de får liten støtte i dag. Du vil imidlertid mer enn sannsynlig ikke kunne kjøre mange Linux-binarier du laster ned fra Internett utenfor de offisielle depotene i dette tilfellet. Det betyr ikke at Ubuntu ikke fungerer på disse maskinene, selv om du kanskje vil se på den lettere Lubuntu-distribusjonen.
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke herMetode 2: Bruke filkommandoen
Filkommandoen identifiserer hvilke forskjellige filer som inneholder, og det er vanligvis veldig nøyaktig. Prøv å identifisere filen ved å skrive inn filnavnOfProgram for å se om du får 32-bit ELF eller ELF 64-bit som utgang. Hvis det forteller deg at det er en ELF 64-biters binær og du mottok i686 som utdata fra kommandoen kommandoen, så er det ingen måte du kan kjøre på den på din maskin. Hvis du har en 64-bits mikroprosessor som kjører 32-biters Ubuntu, kan du teknisk sett installere operativsystemet på nytt, selv om dette er litt av et ekstremt trinn for å kunne kjøre et enkelt program.
Det er også den virkelige muligheten, men liten, at du i stedet kan komme over en binær at når du prøver å kjøre det, spoler du ut søppelpersoner til terminalen selv om du har kjørt en malware-skanning på den. Disse tegnene har vanligvis form av enten glidelåsformede blokker eller alternativt rektangulære kuber som har numeriske verdier i dem. Noen datavitenskapere kaller sistnevnte tofu, og representerer Unicode-verdiene av tegn som de for øyeblikket installerte skrifttypene dine ikke vil kunne vise. Hvis terminalen viser dem slik, kan du være trygg på at dette ikke er en skriftfeil eller noe som har å gjøre med skadelig programvare. Snarere er dette bare fordi den kompilerte mikroprosessoren opcode innsiden av binæret er så fremmed til systemet ditt at den ikke vet hvordan man skal tolke noen av koden.
Den beste måten å fikse dette på er å installere riktig pakke for arkitekturen din. Hvis du installerer pakker fra innsiden av Ubuntu, har apt-get-systemet eller den grafiske Synaptic-administratoren dekket uten problemer. Hvis du laster ned pakker fra en annen distribusjon, må du finne den rette for arkitekturen din. Ta for eksempel Arch Linuxs notering av gvim-pakken. Mens standardpakken inneholder x86_64-arkitekturen, er det også en for i686-brikkesettet. Dette vil fungere på 32-biters maskiner som virker med Intel-interruptstrukturen, men husk at vilkårene i686 og 32-bit ikke er gjensidig inkluderende hele tiden siden andre brikkesett Linux støtter faktisk har sine egne 32-biters implementeringer.
Brukere som utforsker hele GNU / Linux-scenen, kan komme over binarier som er kompilert for langt mer eksotiske teknologier enn disse. Linux er virkelig en kryssplattformskodescene, så du vil se OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha og mange andre standardbinarier er samlet for å jobbe med. Mer enn sannsynlig vil du ikke kunne kjøre noen av disse, selv om ARM er en ekstremt populær nettbrett og smarttelefonplattform. Det er også plattformen som Raspberry Pi er basert på, noe som betyr at hvis du faktisk kjører Ubuntu på en mobilenhet eller Ubuntu MATE-distribusjonen for Raspberry Pi, trenger du faktisk disse i stedet for Intel 32-biters eller x86_64-binarier.
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her