A „nem lehet végrehajtani a bináris fájlt: Exec formátumhiba” javítás az Ubuntun



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Bár a hivatalos apt-get adattárak használatakor nem történhet meg, ha letölt egy szoftvert az internetről és futtatja, akkor van esély arra, hogy meglátja a rettegett bash: ./nameOfProgram: nem tudja végrehajtani a bináris fájlt: Exec formátumhiba . Ez a hiba, amelyet általában követ bash: ./nameOfProgram.sh: Engedély megtagadva vagy valami hasonló jelzi, hogy az Ubuntu nem tudott megfelelően kapcsolódni a letöltött bináris fájlhoz. Ennek oka, hogy bár látszólag érvényes Linux bináris, mégis egy másik chipkészlethez lett tervezve, mint amit a rendszermag jelenleg támogat.



Az Ubuntu-t használók többsége 32 bites vagy 64 bites processzorokat használ, az Intel által kiadott szabványos architektúra alapján, függetlenül attól, hogy valójában ki készítette a mikrochipjét. Fontos megjegyezni, hogy a 64 bites processzorok 32 bites módban is futtathatók, így ha ezt a hibát kapja, annak ellenére, hogy van 64 bites processzora, akkor van esély arra, hogy az Ubuntu 32 bites verzióját futtassa. Néhány egyszerű parancsra van szükség ahhoz, hogy megtudd, miként működik a chiped.



1. módszer: Az arch parancs használata

Ha még nem ismeri a gépére telepített mikroprocesszor típusát, akkor először a parancssorból származó arch parancsot szeretné használni. A parancs futtatása után csak egyetlen kimeneti sort lát vissza. Sok esetben látni fogja az i686-ot, ami azt jelenti, hogy 32 bites processzort használ, és ezért nem tudja futtatni az x86_64 bináris fájlokat. Ha ehelyett az amd64 vagy valami hasonlót lát, akkor x86_64 processzort használ, és legalább elméletileg képesnek kell lennie a legtöbb 32 bites és 64 bites bináris fájl futtatására. A Microsoft Windows rendszerrel ellentétben az Ubuntu Linux valójában tartalmazza a megfelelő eszközöket, amelyek lehetővé teszik a 644 bites chipkészletek felhasználóinak, hogy sok esetben 16 bites Windows programokat futtassanak az operációs rendszerükben is.



Ezek a kifejezések akkor is igazak, ha valójában nem a mikrochip adott modelljét használja. Például az i686 az, ahogyan a Linux sok 32 bites processzorra hivatkozik, még akkor is, ha valójában nem Intel 80686 chipek. Még akkor is, ha 64 bites Intel technológiát használ, az arch még mindig amd64 chipnek hívhatja a processzort. Ez nem jelent hibát, és nyugodtan figyelmen kívül hagyható. Használhatja a macskát / proc / cpuinfo vagy több / proc / cpuinfo hogy megtudja a használt processzor pontos típusát. Mivel a fájl sorai hosszúak, érdemes kiadás előtt nyomja meg az F11 billentyűt, ha grafikus terminálablakot használ. A virtuális konzol felhasználóinak, különösen az Ubuntu szerverrel dolgozóknak nem kell annyira aggódniuk.

Láthat néhány más típusú kimenetet, amelyek tovább korlátozhatják a szoftver futtatásával kapcsolatos lehetőségeket. Az Ubuntu a leghosszabb ideig támogatta a PowerPC architektúrát, amely megtalálható néhány munkaállomáson, valamint számos klasszikus Macintosh és régebbi OS X Macintosh gépen. Még mindig megtalálhatja ezeknek az architektúráknak az Ubuntu tárházait, bár ezek ma kevés támogatást kapnak. Ebben az esetben azonban valószínűleg nem fog tudni futtatni számos, az internetről letöltött Linux bináris fájlt a hivatalos adattárakon kívül. Ez nem azt jelenti, hogy az Ubuntu nem működik ezeken a gépeken, bár érdemes megnézni a könnyebb Lubuntu disztribúciót.

2. módszer: A fájlparancs használata

A fájl parancs azonosítja, hogy a különböző fájlok mit tartalmaznak, és általában nagyon pontos. Próbálja meg azonosítani a kérdéses fájlt a fájl beírásával nameOfProgram hogy megtudja, kap-e kimenetként ELF 32 bites vagy 64 bites ELF-et. Ha azt mondja, hogy ez egy ELF 64 bites bináris fájl, és az i686-ot az arch parancs kimeneteként kapta, akkor semmilyen módon nem tudja ésszerűen futtatni a gépén. Ha egy 64 bites mikroprocesszort használ, amely 32 bites Ubuntut futtat, akkor technikailag újratelepítheti az operációs rendszert, bár ez egy kissé rendkívüli lépés egyetlen program futtatásához.



Van egy nagyon reális lehetőség, bármennyire csekély is, hogy találkozhat egy bináris fájlral, amely futtatásakor szemétszakaszokat szór ki a terminálra, még akkor is, ha rosszindulatú programokat futtat rajta. Ezek a karakterek általában rombusz alakú blokkok vagy alternatív megoldásként téglalap alakú kockák, amelyek számszerű értékeket tartalmaznak. Egyes informatikusok ez utóbbit tofunak hívják, és azoknak a karaktereknek az Unicode-értékeit képviselik, amelyeket a jelenleg telepített betűtípusok nem képesek megjeleníteni. Ha a terminál így jeleníti meg őket, akkor biztos lehet benne, hogy ez nem betűtípushiba, és semmi köze sem a rosszindulatú programhoz. Inkább ez egyszerűen azért van, mert a bináris fájlban található lefordított mikroprocesszor opcode annyira idegen a rendszeredtől, hogy nem tudja, hogyan kell értelmezni a kód egy részét.

A probléma megoldásának legjobb módja az architektúrához megfelelő csomag telepítése. Ha az Ubuntu belsejéből telepít csomagokat, akkor az apt-get rendszer vagy a grafikus Synaptic kezelő gond nélkül lefedte. Ha egy másik terjesztésről tölt le csomagokat, akkor meg kell találnia az architektúrájának megfelelőt. Vegyük például az Arch Linux listáját a gvim csomagról. Míg az alapértelmezett csomag az x86_64 architektúrát tartalmazza, az i686 chipsethez is tartozik egy. Ez 32 bites gépeken fog működni, amelyek az Intel megszakítási struktúrájával működnek, de ne feledje, hogy az i686 és a 32 bites kifejezések nem tartalmazzák egymást folyamatosan, mivel a Linux által támogatott más chipsetek valóban saját 32 bites megvalósításokkal rendelkeznek.

A teljes GNU / Linux színteret felfedező felhasználók találkozhatnak bináris fájlokkal, amelyek ennél sokkal egzotikusabb technológiákra vannak összeállítva. A Linux valóban egy platformon átívelő kódjelenet, így látni fogja az OpenRISC, a MIPS, a SPARC, az M32R, az MN103, az ARM, az ARC, az Alpha és sok más szabványos bináris fájlt. Több mint valószínű, hogy ezek egyikét sem fogja tudni futtatni, pedig az ARM rendkívül népszerű táblagépes és okostelefonos platform. Ez egyben az a platform is, amelyen a Raspberry Pi alapul, ami azt jelenti, hogy ha valóban az Ubuntut futtatja mobileszközön, vagy az Ubuntu MATE disztribúciót használja a Raspberry Pi számára, akkor ezekre valóban szüksége lesz az Intel 32 bites vagy x86_64 bináris fájlok helyett.

4 perc olvasás