Hur man fixar "kan inte utföra binär fil: Exec-formatfel" på Ubuntu
Medan det inte ska hända när du använder den officiella apt-get-arkivet, om du hämtar program från Internet och kör det så finns det en chans att du får se den fruktade bash: ./nameOfProgram: kan inte utföra binärfil: Exec-formatfel . Detta fel, som vanligtvis följs av bash: ./nameOfProgram.sh: Tillstånd nekat eller något liknande det, indikerar att Ubuntu inte kunde skicka gränssnitt korrekt med binäret du hämtade. Detta beror på att medan det tydligen är ett giltigt Linux-binärt, är det utformat för en annan chipset än din kärna stödjer.
De flesta som använder Ubuntu är på 32-bitars eller 64-bitars processorer baserade på en standardarkitektur som Intel släppte, oavsett vem som faktiskt gjorde sina mikrochips. Det är viktigt att komma ihåg att 64-bitars processorer kan köras i 32-bitars läge, så om du får detta fel trots att du har en 64-bitars processor finns det en chans att du kör en 32-bitarsversion av Ubuntu. Några enkla kommandon är allt som krävs för att berätta vad din chip fungerar som.
Metod 1: Använda kommandot Arch
Om du inte är bekant med typen av mikroprocessor som du har installerat på din maskin, vill du först använda kommandot kommandot från kommandoraden. Du kommer bara att se en enda produktionslinje som returneras till dig efter att ha kört det här kommandot. I många fall ser du i686, vilket innebär att du är på en 32-bitars processor och kan därför inte köra x86_64 binärer. Om du istället ser amd64 eller något liknande, så är du på en x86_64-processor och bör åtminstone teoretiskt kunna köra de flesta 32-bitars och 64-bitars binärer. Till skillnad från Microsoft Windows innehåller Ubuntu Linux faktiskt rätt verktyg för att tillåta användare av 644-bitars chipset att köra 16-bitars Windows-program i operativsystemet i många fall också.
Dessa termer är fortfarande sanna även om du inte faktiskt använder den speciella mikrochipmodellen. Till exempel, i686 är hur Linux hänvisar till många 32-bitars processorer, även om de inte är egentligen Intel 80686-chips. Även om du använder 64-bitars Intel-teknik kan Arch fortfarande kalla din processor en amd64-chip. Detta indikerar inte ett fel och kan säkert ignoreras. Du kan använda katt / proc / cpuinfo eller mer / proc / cpuinfo för att ta reda på exakt vilken typ av processor du använder. Eftersom linjerna i den här filen är långa kanske du vill trycka på F11 innan du utfärdar den om du använder ett grafiskt terminalfönster. Användare av en virtuell konsol, särskilt de som arbetar med Ubuntu-servern, behöver inte oroa sig lika mycket.
Det kan hända att du ser några andra typer av utdata, vilket kan begränsa dina alternativ när det gäller att köra programvara. Ubuntu har stöd för PowerPC-arkitekturen under lång tid, vilket finns i vissa arbetsstationer, liksom många Macintosh-maskiner och äldre OS X Macintosh-maskiner. Du kan faktiskt hitta Ubuntu repositories för dessa arkitekturer, men de får lite stöd idag. Men du kommer sannolikt inte att kunna köra många Linux-binärer som du hämtar från Internet utanför de officiella arkiverna i det här fallet. Det betyder inte att Ubuntu inte fungerar på dessa maskiner, men du kanske vill titta på den lättare Lubuntu-distributionen.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka härMetod 2: Använd filkommandot
Filkommandot identifierar vilka olika filer som innehåller, och det är vanligtvis mycket korrekt. Prova att identifiera filen i fråga genom att skriva filnamnOfProgram för att se om du får ELF 32-bit eller ELF 64-bit som utgång. Om det berättar att det är en ELF 64-bitars binär och du fick i686 som utgång från kommandot kommandot, så finns det ingen möjlighet att du kan använda den på din dator. Om du är på en 64-bitars mikroprocessor som kör 32-bitars Ubuntu, kan du tekniskt installera om operativsystemet, men det här är lite extrema steg för att kunna köra ett enda program.
Det finns också den mycket verkliga möjligheten, dock liten, att du i stället kan komma över en binär att när du försöker springa spårar du skräptecken till terminalen även om du har kört en skanning av skadlig kod på den. Dessa tecken brukar ha formen av antingen lozensformade block eller alternativt rektangulära kuber som har numeriska värden i dem. Vissa datavetenskapare kallar den senare tofuen, och representerar Unicode-värdena för tecken som dina nuvarande installerade teckensnitt inte kommer att kunna visa. Om terminalen visar dem så här kan du vara säker på att detta inte är ett typfel eller något som har att göra med skadlig kod. Snarare är detta helt enkelt för att den kompilerade mikroprocessorn opcode inuti binären är så alien till ditt system att den inte vet hur man tolkar en del av koden.
Det bästa sättet att åtgärda detta är att installera rätt paket för din arkitektur. Om du installerar paket från inuti Ubuntu, har apt-get-systemet eller den grafiska Synaptic-hanteraren täckt utan några problem. Om du hämtar paket från en annan distribution måste du hitta den rätta för din arkitektur. Ta till exempel Arch Linuxs notering av gvim-paketet. Medan standardpaketet innehåller x86_64-arkitekturen finns det också en för i686-chipsetet. Den här kommer att fungera på 32-bitars maskiner som fungerar med Intel-avbrottsstrukturen, men kom ihåg att termerna i686 och 32-bitar inte är ömsesidigt inkluderande hela tiden eftersom andra chipset Linux stöder, har faktiskt egna 32-bitars implementeringar.
Användare som utforskar hela GNU / Linux-scenen kan stöta på binärer som kompilerats för långt mer exotisk teknik än dessa. Linux är verkligen en korsplattformskodplats, så du får se OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha och många andra standardbinarier sammanställs för att arbeta med. Mer än troligt kommer du inte att kunna köra någon av dessa, men ARM är en extremt populär surfplattform och smarttelefonplattform. Det är också plattformen som Raspberry Pi är baserad runt, vilket innebär att om du faktiskt kör Ubuntu på en mobilenhet eller Ubuntu MATE-distributionen för Raspberry Pi behöver du faktiskt dessa i stället för Intel 32-bitars eller x86_64-binärer.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här