Sådan Fix 'kan ikke udføre binær fil: Exec format fejl' på Ubuntu

Selvom det ikke skal ske, når du bruger de officielle apt-get-lagre, hvis du downloader software fra internettet og kører det så er der en chance for at du kan se den frygtede bash: ./nameOfProgram: kan ikke udføre binærfil: Exec-formatfejl . Denne fejl, som normalt efterfølges af bash: ./nameOfProgram.sh: Tilladelse afvist eller noget lignende, indikerer, at Ubuntu ikke kunne interface korrekt med binæret du downloadede. Dette skyldes, at selv om det tilsyneladende er et gyldigt Linux-binært, er det designet til et andet chipsæt end din kernel understøtter i øjeblikket.

De fleste, der bruger Ubuntu, er på 32-bit eller 64-bit processorer baseret på en standardarkitektur, som Intel udgav, uanset hvem der faktisk lavede deres mikrochips. Det er vigtigt at huske, at 64-bit processorer kan køre i 32-bit-tilstand, så hvis du får denne fejl, selvom du har en 64-bit processor, er der en chance for, at du kører en 32-bit version af Ubuntu. Et par enkle kommandoer er alt, hvad der kræves for at fortælle, hvad din chip fungerer som.

Metode 1: Brug af kommandoen Arch

Hvis du ikke er bekendt med den type mikroprocessor, du har installeret på din maskine, vil du først bruge kommandoen kommando fra kommandolinjen. Du får kun se en enkelt produktionslinje, der er returneret til dig, efter at du har kørt denne kommando. I mange tilfælde vil du se i686, hvilket betyder at du er på en 32-bit processor og derfor ikke kan køre x86_64 binære filer. Hvis du i stedet ser amd64 eller noget lignende, så er du på en x86_64-processor, og skal i det mindste teoretisk kunne køre de fleste 32-bit og 64-bit binære filer. I modsætning til Microsoft Windows indeholder Ubuntu Linux faktisk de rigtige værktøjer, der gør det muligt for brugere af 644-bit chipsæt at køre 16-bit Windows-programmer i deres operativsystem i mange tilfælde også.

Disse udtryk gælder stadig, selvom du ikke bruger den pågældende model af mikrochip. For eksempel er i686, hvordan Linux refererer til mange 32-bit processorer, selvom de ikke er faktisk Intel 80686 chips. Selvom du bruger 64-bit Intel-teknologi, kan Arch stadig ringe til din processor en amd64-chip. Dette angiver ikke en fejl og kan sikkert ignoreres. Du kan bruge cat / proc / cpuinfo eller mere / proc / cpuinfo for at finde ud af den nøjagtige type processor du bruger. Da linjerne i denne fil er længe, ​​vil du måske skubbe F11, før du udsteder det, hvis du bruger et grafisk terminalvindue. Brugere af en virtuel konsol, især dem, der arbejder med Ubuntu-server, behøver ikke bekymre sig ret så meget.

Du kan muligvis se nogle andre typer output, hvilket muligvis yderligere begrænser dine muligheder, når det kommer til at køre software. Ubuntu understøttet PowerPC-arkitektur i længst tid, som findes i nogle arbejdsstationer samt mange Classic Macintosh og ældre OS X Macintosh-maskiner. Du kan faktisk finde Ubuntu repositories for disse arkitekturer, selvom de får lidt support i dag. Men du vil sandsynligvis ikke være i stand til at køre mange Linux-binære filer, du downloader fra internettet uden for de officielle arkiver i dette tilfælde. Det betyder ikke, at Ubuntu ikke virker på disse maskiner, selvom du måske vil se på den lettere Lubuntu distribution.

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Metode 2: Brug af filkommandoen

Filkommandoen identificerer, hvilke forskellige filer der indeholder, og det er normalt meget nøjagtigt. Prøv at identificere den pågældende fil ved at skrive filnavnOfProgram for at se, om du får ELF 32-bit eller ELF 64-bit som output. Hvis det fortæller dig, at det er en ELF 64-bit binær og du har fået i686 som output fra kommandoen kommando, så er der ingen måde, du med rimelighed kan køre den på din maskine. Hvis du befinder dig på en 64-bit mikroprocessor, der kører 32-bit Ubuntu, kan du teknisk set geninstallere operativsystemet, selv om dette er lidt af et ekstremt skridt for at køre et enkelt program.

Der er også den meget reelle mulighed, dog let, at du i stedet kan komme på tværs af en binær, at når du forsøger at køre det, spyder du junkpersoner til terminalen, selvom du har kørt en malware scan på den. Disse figurer har sædvanligvis form af enten sugemønstret blokke eller alternativt rektangulære terninger, der har numeriske værdier i dem. Nogle computerforskere kalder sidstnævnte tofu, og repræsenterer Unicode-værdierne for tegn, som dine nuværende installerede skrifttyper ikke vil kunne vise. Hvis terminalen viser dem som dette, kan du være sikker på, at dette hverken er en skrifttypefejl eller noget, der har at gøre med malware. Snarere er dette simpelthen fordi den kompilerede mikroprocessor opcode inde i binæret er så fremmed for dit system, at den ikke ved, hvordan man fortolker nogle af koden.

Den bedste måde at løse dette på er at installere den rigtige pakke til din arkitektur. Hvis du installerer pakker indefra Ubuntu, så har apt-get systemet eller den grafiske Synaptic manager dækket uden problemer. Hvis du downloader pakker fra en anden distribution, skal du finde den rigtige for din arkitektur. Tag for eksempel Arch Linuxs notering af gvim-pakken. Mens standardpakken indeholder x86_64-arkitekturen, er der også en til i686-chipsætet. Denne vil arbejde på 32-bit-maskiner, der arbejder med Intel-interruptstrukturen, men husk at vilkårene i686 og 32-bit ikke er gensidigt inklusiv hele tiden siden andre chipsæt Linux understøtter, at de faktisk har deres egne 32-bit implementeringer.

Brugere, der udforsker hele GNU / Linux-scenen, kan komme på tværs af binære filer, der er kompileret til langt mere eksotiske teknologier end disse. Linux er virkelig en cross-platform kode scene, så du vil se OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha og mange andre standard binarier er kompileret til at arbejde med. Mere end sandsynligt vil du ikke kunne køre nogen af ​​disse, selv om ARM er en ekstremt populær tablet- og smartphone platform. Det er også den platform, som Raspberry Pi er baseret på, hvilket betyder, at hvis du rent faktisk kører Ubuntu på en mobil enhed eller Ubuntu MATE-distributionen til Raspberry Pi, skal du faktisk bruge disse i stedet for Intel 32-bit eller x86_64-binære filer.

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Facebook Twitter Google Plus Pinterest