Kako popraviti 'ne može izvršiti binarnu datoteku: Pogreška formata Exec' na Ubuntuu



Isprobajte Naš Instrument Za Uklanjanje Problema

Iako se to ne bi trebalo dogoditi pri korištenju službenih spremišta apt-get, ako softver preuzmete s Interneta i pokrenete, tada postoji šansa da ćete vidjeti zastrašujuće bash: ./nameOfProgram: ne može izvršiti binarnu datoteku: Pogreška u formatu Exec . Ova pogreška, koju obično slijedi bash: ./nameOfProgram.sh: Dozvola odbijena ili nešto slično, ukazuje na to da Ubuntu nije uspio pravilno sučeljeti s binarnim datotekama koje ste preuzeli. To je zato što je, iako je očito važeća Linux binarna datoteka, dizajniran za drugačiji čipset koji vaš kernel trenutno podržava.



Većina ljudi koji koriste Ubuntu koriste 32-bitne ili 64-bitne procesore koji se temelje na standardnoj arhitekturi koju je Intel objavio, bez obzira na to tko je zapravo izradio njihove mikročipove. Važno je zapamtiti da 64-bitni procesori mogu raditi u 32-bitnom načinu, pa ako dobijete ovu pogrešku iako imate 64-bitni procesor, postoji vjerojatnost da imate 32-bitnu verziju Ubuntua. Dovoljno je nekoliko jednostavnih naredbi da biste znali na čemu radi vaš čip.



Metoda 1: Upotreba naredbe arch

Ako niste upoznati s vrstom mikroprocesora koji ste instalirali na svoj stroj, prvo ćete htjeti upotrijebiti naredbu arch iz naredbenog retka. Nakon pokretanja ove naredbe vidjet ćete samo jedan redak izlaza. U mnogim ćete slučajevima vidjeti i686, što znači da ste na 32-bitnom procesoru i da stoga ne možete pokretati x86_64 binarne datoteke. Ako umjesto toga vidite amd64 ili nešto slično, tada ste na procesoru x86_64 i trebali biste barem teoretski moći pokretati većinu 32-bitnih i 64-bitnih binarnih datoteka. Za razliku od Microsofta Windows, Ubuntu Linux zapravo sadrži odgovarajuće alate koji korisnicima u 644-bitnim čipsetima u mnogim slučajevima omogućuju i pokretanje 16-bitnih Windows programa.



Ovi su pojmovi i dalje istiniti čak i ako zapravo ne upotrebljavate taj određeni model mikročipa. Na primjer, i686 je način na koji se Linux odnosi na mnoge 32-bitne procesore, čak iako to zapravo nisu čipovi Intel 80686. Čak i ako koristite 64-bitnu Intelovu tehnologiju, Arch bi vaš procesor i dalje mogao nazvati amd64 čipom. To ne znači pogrešku i može se sigurno zanemariti. Možete koristiti mačku / proc / cpuinfo ili više / proc / cpuinfo kako biste saznali točnu vrstu procesora koji koristite. Budući da su redovi u ovoj datoteci dugi, možda ćete htjeti pritisnuti F11 prije izdavanja ako koristite grafički prozor terminala. Korisnici virtualne konzole, posebno oni koji rade s Ubuntu poslužiteljem, neće se morati toliko brinuti.

Možda ćete vidjeti neke druge vrste rezultata, što može dodatno ograničiti vaše mogućnosti kada je u pitanju pokretanje softvera. Ubuntu je najduže podržavao PowerPC arhitekturu, koja se nalazi na nekim radnim stanicama, kao i na mnogim Classic Macintosh i starijim OS X Macintosh strojevima. Za ove arhitekture zapravo još uvijek možete pronaći Ubuntu spremišta, iako oni danas imaju malu podršku. Međutim, u ovom slučaju više vjerojatno nećete moći pokrenuti mnoge Linux binarne datoteke koje preuzmete s Interneta izvan službenih spremišta. To ne znači da Ubuntu ne radi na tim strojevima, iako biste možda trebali pogledati lakšu Lubuntu distribuciju.

2. metoda: Korištenje naredbe datoteke

Naredba datoteke identificira što sadrže različite datoteke i obično je vrlo točna. Pokušajte identificirati dotičnu datoteku upisivanjem datoteke nameOfProgram da biste vidjeli dobivate li kao izlaz 32-bitni ELF ili 64-bitni ELF. Ako vam kaže da je riječ o 64-bitnom binarnom ELF-u i primili ste i686 kao izlaz iz naredbe arch, onda ga nema šanse razumno pokrenuti na svom stroju. Ako se nalazite na 64-bitnom mikroprocesoru sa 32-bitnim Ubuntuom, tada biste tehnički mogli ponovno instalirati operativni sustav, iako je ovo pomalo ekstreman korak kako biste pokrenuli jedan program.



Također postoji vrlo stvarna mogućnost, ma kako mala, da biste umjesto toga mogli naići na binarnu datoteku koja prilikom pokušaja pokretanja izbacuje neželjene znakove na terminal, čak i ako ste na njemu izvršili skeniranje zlonamjernog softvera. Ti su znakovi obično u obliku blokova u obliku pastile ili pak pravokutnih kocki koje u sebi imaju numeričke vrijednosti. Neki računalni znanstvenici potonji nazivaju tofu i predstavljaju Unicode vrijednosti znakova koje vaše trenutno instalirane vrste slova neće moći prikazati. Ako ih terminal prikazuje ovako, možete biti sigurni da to nije niti pogreška fonta niti bilo kakve veze sa zlonamjernim softverom. Umjesto toga, to je jednostavno zato što je kompilirani mikroprocesorski opcode unutar binarnog sustava toliko stran vašem sistemu da ne zna kako protumačiti dio koda.

Najbolji način da to popravite je instaliranje odgovarajućeg paketa za vašu arhitekturu. Ako instalirate pakete iz Ubuntua, sustav apt-get ili grafički Synaptic manager pokrili su vas bez ikakvih problema. Ako preuzimate pakete iz druge distribucije, morat ćete pronaći pravi za svoju arhitekturu. Uzmimo za primjer Arch Linuxov popis gvim paketa. Iako zadani paket sadrži arhitekturu x86_64, postoji i jedan za i686 čipset. Ovaj će raditi na 32-bitnim strojevima koji rade s Intelovom strukturom prekida, ali imajte na umu da se pojmovi i686 i 32-bit ne uključuju cijelo vrijeme budući da drugi čipseti koje Linux podržava zapravo imaju svoje 32-bitne implementacije.

Korisnici koji istražuju cijelu GNU / Linux scenu mogli bi naići na binarne datoteke sastavljene za daleko egzotičnije tehnologije od ovih. Linux je doista scena s više platformi, tako da ćete vidjeti OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha i mnoge druge standardne binarne datoteke sastavljene su za rad. Više od vjerojatnosti nećete moći pokrenuti nijedno od njih, iako je ARM izuzetno popularna platforma za tablete i pametne telefone. To je također platforma na kojoj se temelji Raspberry Pi, što znači da ako zapravo koristite Ubuntu na mobilnom uređaju ili Ubuntu MATE distribuciju za Raspberry Pi, oni će vam zapravo trebati umjesto Intelovih 32-bitnih ili x86_64 binarnih datoteka.

4 minute čitanja