Com es corregeix 'no es pot executar un fitxer binari: error de format Exec' a l'Ubuntu



Proveu El Nostre Instrument Per Eliminar Problemes

Tot i que no hauria de passar quan s’utilitzen els repositoris oficials d’apt-get, si descarregueu programari d’Internet i l’executeu, hi ha la possibilitat que vegeu el temut. bash: ./nameOfProgram: no es pot executar un fitxer binari: error de format Exec . Aquest error, que sol anar seguit de bash: ./nameOfProgram.sh: permís denegat o alguna cosa semblant, indica que Ubuntu no ha estat capaç de connectar-se correctament amb el binari que heu baixat. Això es deu al fet que, tot i que aparentment és un binari Linux vàlid, està dissenyat per a un conjunt de xips diferent del que suporta actualment el vostre nucli.



La majoria de les persones que utilitzen Ubuntu utilitzen processadors de 32 o 64 bits basats en una arquitectura estàndard que Intel va llançar, independentment de qui realitzés els seus microxips. És important recordar que els processadors de 64 bits poden funcionar en mode de 32 bits, de manera que si teniu aquest error tot i que teniu un processador de 64 bits, hi ha la possibilitat d’executar una versió d’Ubuntu de 32 bits. Només cal unes quantes ordres simples per saber com funciona el vostre xip.



Mètode 1: utilitzar l'ordre arch

Si no esteu familiaritzat amb el tipus de microprocessador que heu instal·lat a l’equip, primer voldreu utilitzar l’ordre arch des de la línia d’ordres. Després d’executar aquesta ordre, només veureu una sola línia de sortida. En molts casos, veureu l’i686, cosa que significa que teniu un processador de 32 bits i, per tant, no podeu executar binaris x86_64. Si en canvi veieu amd64 o alguna cosa semblant, feu servir un processador x86_64 i, com a mínim, teòricament hauríeu de poder executar la majoria de fitxers binaris de 32 i 64 bits. A diferència de Microsoft Windows, Ubuntu Linux en realitat conté les eines adequades per permetre als usuaris de chipsets de 644 bits executar programes Windows de 16 bits al seu sistema operatiu en molts casos també.



Aquests termes continuen sent certs encara que realment no utilitzeu aquest model concret de microxip. Per exemple, i686 és com Linux es refereix a molts processadors de 32 bits encara que en realitat no siguin xips Intel 80686. Fins i tot si utilitzeu la tecnologia Intel de 64 bits, és possible que Arch continuï cridant al vostre processador un xip amd64. Això no indica cap error i es pot ignorar amb seguretat. Podeu utilitzar cat / proc / cpuinfo o més / proc / cpuinfo per esbrinar el tipus exacte de processador que utilitzeu. Com que les línies d’aquest fitxer són llargues, és possible que vulgueu prémer F11 abans d’emetre’l si utilitzeu una finestra de terminal gràfica. Els usuaris d’una consola virtual, especialment aquells que treballen amb el servidor Ubuntu, no s’hauran de preocupar tant.

És possible que vegeu alguns altres tipus de sortida, que poden restringir encara més les vostres opcions a l’hora d’executar programari. Ubuntu va suportar l'arquitectura PowerPC durant més temps, que es troba en algunes estacions de treball, així com en moltes màquines Macintosh clàssiques i antigues OS X Macintosh. De fet, encara podeu trobar repositoris d'Ubuntu per a aquestes arquitectures, tot i que avui en dia reben poca compatibilitat. No obstant això, és probable que no pugueu executar molts fitxers binaris de Linux que baixeu d'Internet fora dels repositoris oficials en aquest cas. Això no vol dir que Ubuntu no funcioni en aquestes màquines, tot i que potser voldreu veure la distribució de Lubuntu més lleugera.

Mètode 2: utilitzant el fitxer Ordre

L’ordre file identifica els diferents fitxers que conté i sol ser molt precisa. Proveu d’identificar el fitxer en qüestió escrivint fitxer nomDePrograma per veure si obteniu ELF de 32 bits o ELF de 64 bits com a sortida. Si us indica que és un binari ELF de 64 bits i que heu rebut l'i686 com a sortida de l'ordre arch, no hi ha cap manera que pugueu executar-lo raonablement a la vostra màquina. Si teniu un microprocessador de 64 bits que executa Ubuntu de 32 bits, podríeu tornar a instal·lar tècnicament el sistema operatiu, tot i que es tracta d’un pas extrem per executar un sol programa.



També hi ha la possibilitat real, per molt petita que sigui, que pugueu trobar-vos amb un binari que, quan intenteu executar-lo, expulseu caràcters brossa al terminal, fins i tot si heu executat un malware. Aquests caràcters solen adoptar la forma de blocs en forma de pastilla o, alternativament, de cubs rectangulars que contenen valors numèrics. Alguns informàtics anomenen aquest darrer tofu i representen els valors Unicode dels caràcters que les vostres tipografies instal·lades actualment no podran mostrar. Si el terminal els mostra així, podeu estar segur que no es tracta d’un error de tipus de lletra ni de res que tingui a veure amb programari maliciós. Més aviat, això es deu simplement a que el codi opcional del microprocessador compilat a l'interior del binari és tan aliè al vostre sistema que no sap interpretar una part del codi.

La millor manera de solucionar-ho és instal·lar el paquet adequat per a la vostra arquitectura. Si instal·leu paquets des de l’Ubuntu, el sistema apt-get o el gestor gràfic Synaptic us cobriran sense problemes. Si descarregueu paquets d’una altra distribució, haureu de trobar el més adequat per a la vostra arquitectura. Prenem, per exemple, la llista del paquet gvim d’Arch Linux. Tot i que el paquet predeterminat inclou l’arquitectura x86_64, també n’hi ha un per al chipset i686. Aquest funcionarà en màquines de 32 bits que funcionin amb l’estructura d’interrupcions d’Intel, però recordeu que els termes i686 i 32 bits no s’inclouen mútuament tot el temps, ja que altres chipsets que suporta Linux presenten les seves pròpies implementacions de 32 bits.

Els usuaris que exploren tota l'escena GNU / Linux poden trobar-se amb binaris compilats per a tecnologies molt més exòtiques que aquestes. Linux és realment una escena de codi multiplataforma, de manera que veureu OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha i molts altres binaris estàndard que es compilen per treballar-hi. El més probable és que no en pugueu executar cap, tot i que ARM és una plataforma de tauletes i telèfons intel·ligents molt populars. També és la plataforma que basa Raspberry Pi, cosa que significa que si realment executeu Ubuntu en un dispositiu mòbil o la distribució Ubuntu MATE per a Raspberry Pi, realment en necessitareu els binaris Intel de 32 bits o x86_64.

4 minuts de lectura