Kā salabot Ubuntu nevar izpildīt bināro failu: izpildes formāta kļūda



Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai

Lai gan tam nevajadzētu notikt, izmantojot oficiālos apt-get krātuves, ja lejupielādējat programmatūru no interneta un palaižat to, ir iespēja, ka redzēsiet drausmīgos bash: ./nameOfProgram: nevar izpildīt bināro failu: Exec formāta kļūda . Šī kļūda, kurai parasti seko bash: ./nameOfProgram.sh: Atļauja liegta vai kaut kas tamlīdzīgs, norāda, ka Ubuntu nav varējis pareizi saskarties ar lejupielādēto bināro failu. Tas ir tāpēc, ka, lai gan tas acīmredzot ir derīgs Linux binārs, tas ir paredzēts citam mikroshēmojumam, nekā pašlaik atbalsta jūsu kodols.



Lielākā daļa cilvēku, kas izmanto Ubuntu, izmanto 32 vai 64 bitu procesorus, kuru pamatā ir standarta arhitektūra, kuru Intel izlaida, neatkarīgi no tā, kurš faktiski izgatavoja viņu mikroshēmas. Ir svarīgi atcerēties, ka 64 bitu procesori var darboties 32 bitu režīmā, tādēļ, ja tiek parādīta šī kļūda, pat ja jums ir 64 bitu procesors, pastāv iespēja, ka izmantojat Ubuntu 32 bitu versiju. Ir dažas vienkāršas komandas, kas nepieciešamas, lai uzzinātu, kā darbojas jūsu mikroshēma.



1. metode: Arhīva komandas izmantošana

Ja jums nav zināms mikroprocesora veids, kuru esat instalējis savā datorā, vispirms vispirms vēlaties izmantot komandu arch no komandrindas. Pēc šīs komandas izpildes jūs redzēsit tikai vienu izvades rindu. Daudzos gadījumos jūs redzēsit i686, kas nozīmē, ka izmantojat 32 bitu procesoru un tāpēc nevarat palaist x86_64 bināros failus. Ja tā vietā redzat amd64 vai kaut ko līdzīgu, tad izmantojat x86_64 procesoru, un jums vismaz teorētiski vajadzētu būt iespējai palaist lielāko daļu 32 bitu un 64 bitu bināros failus. Atšķirībā no Microsoft Windows, Ubuntu Linux faktiski satur piemērotus rīkus, lai ļautu 644 bitu mikroshēmojumu lietotājiem daudzos gadījumos arī palaist 16 bitu Windows programmas savā operētājsistēmā.



Šie termini joprojām ir patiesi, pat ja jūs faktiski neizmantojat konkrēto mikroshēmas modeli. Piemēram, i686 ir tas, kā Linux atsaucas uz daudziem 32 bitu procesoriem, pat ja tie patiesībā nav Intel 80686 mikroshēmas. Pat ja jūs izmantojat 64 bitu Intel tehnoloģiju, arch joprojām var saukt jūsu procesoru par amd64 mikroshēmu. Tas neliecina par kļūdu, un to var droši ignorēt. Jūs varat izmantot kaķi / proc / cpuinfo vai vairāk / proc / cpuinfo lai uzzinātu precīzu izmantotā procesora veidu. Tā kā šī faila rindas ir garas, iespējams, vēlēsities nospiest F11 pirms tā izdošanas, ja izmantojat grafisko termināla logu. Virtuālās konsoles lietotājiem, īpaši tiem, kas strādā ar Ubuntu serveri, nebūs tik daudz jāuztraucas.

Iespējams, redzēsit dažus citus izvades veidus, kas varētu vēl vairāk ierobežot jūsu iespējas programmatūras palaišanā. Ubuntu visilgāk atbalstīja PowerPC arhitektūru, kas ir atrodama dažās darbstacijās, kā arī daudzās Classic Macintosh un vecākās OS X Macintosh mašīnās. Jūs faktiski joprojām varat atrast Ubuntu krātuves šīm arhitektūrām, lai gan šodien tās saņem maz atbalstu. Tomēr šajā gadījumā jūs, visticamāk, nevarēsiet palaist daudzus Linux bināros failus, kurus lejupielādējat no interneta, ārpus oficiālajiem krātuvēm. Tas nenozīmē, ka Ubuntu nedarbojas šajās mašīnās, lai gan jūs varētu vēlēties aplūkot vieglāku Lubuntu izplatīšanu.

2. metode: faila komandas izmantošana

Faila komanda identificē dažādu failu saturus, un parasti tā ir ļoti precīza. Mēģiniet identificēt attiecīgo failu, ierakstot failu nameOfProgram lai redzētu, vai jūs iegūstat ELF 32 bitu vai ELF 64 bitu kā izvadi. Ja tas jums saka, ka tas ir ELF 64 bitu binārs un jūs saņēmāt i686 kā izvadi no komandas arch, tad nekādā gadījumā nevarat to saprātīgi palaist savā datorā. Ja izmantojat 64 bitu mikroprocesoru, kurā darbojas 32 bitu Ubuntu, operētājsistēmu varētu tehniski pārinstalēt, lai gan tas ir mazliet ārkārtējs solis, lai palaistu vienu programmu.



Pastāv arī reāla, lai arī neliela iespēja, ka tā vietā jūs varētu sastapties ar bināru versiju, kas, mēģinot to palaist, izlaiž junk rakstzīmes terminālim, pat ja tajā esat skenējis ļaunprātīgu programmatūru. Šīs rakstzīmes parasti izpaužas kā pastilas formas bloki, vai arī taisnstūra formas kubi, kuros ir skaitliskas vērtības. Daži datorzinātnieki pēdējo sauc par tofu un attēlo Unicode vērtības rakstzīmēm, kuras jūsu pašlaik instalētie burtveidoli nevarēs parādīt. Ja termināls tos parāda šādi, tad varat būt drošs, ka tā nav ne fonta kļūda, ne arī kaut kas saistīts ar ļaunprātīgu programmatūru. Drīzāk tas ir vienkārši tāpēc, ka kompilētais mikroprocesora opkods binārā faila iekšpusē ir tik svešs jūsu sistēmai, ka nezina, kā interpretēt dažus kodus.

Labākais veids, kā to novērst, ir instalēt atbilstošu paketi savai arhitektūrai. Ja instalējat pakotnes no Ubuntu iekšpuses, apt-get sistēma vai grafiskais Synaptic pārvaldnieks jūs esat aptvēris bez problēmām. Ja lejupielādējat pakas no cita izplatītāja, jums jāatrod savai arhitektūrai piemērotākais. Piemēram, izmantojiet Arch Linux pakotnes gvim sarakstu. Kaut arī noklusējuma pakotne ir aprīkota ar x86_64 arhitektūru, tā ir arī i686 mikroshēmojumam. Šis darbosies ar 32 bitu mašīnām, kas darbojas ar Intel pārtraukumu struktūru, taču atcerieties, ka termini i686 un 32 biti visu laiku nav savstarpēji iekļaujami, jo citiem Linux atbalstītajiem mikroshēmojumiem faktiski ir sava 32 bitu ieviešana.

Lietotāji, kas pēta visu GNU / Linux ainu, var sastapt bināros failus, kas sastādīti daudz eksotiskākām tehnoloģijām nekā šīs. Linux patiešām ir starpplatformu koda aina, tāpēc jūs redzēsiet OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha un daudzus citus standartus. Vairāk nekā iespējams, jūs nevarēsiet palaist nevienu no šiem, lai gan ARM ir ārkārtīgi populāra planšetdatoru un viedtālruņu platforma. Tā ir arī platforma, uz kuras balstās Raspberry Pi, kas nozīmē, ka, ja jūs faktiski izmantojat Ubuntu mobilajā ierīcē vai Ubuntu MATE izplatīšanu Raspberry Pi, jums tie būs nepieciešami nevis Intel 32 bitu vai x86_64 bināro failu vietā.

4 minūtes lasītas