Gidai

Kaip pataisyti „negalima vykdyti dvejetainio failo:„ Exec “formato klaida“ Ubuntu

Nors tai neturėtų atsitikti naudojant oficialias „apt-get“ saugyklas, atsisiųsdami programinę įrangą iš interneto ir ją paleidę, yra tikimybė, kad pamatysite bijotą bash: ./nameOfProgram: negalima vykdyti dvejetainio failo: „Exec“ formato klaida. Ši klaida, kurios paprastai laikomasi bash: ./nameOfProgram.sh: Leidimas atmestas ar kažkas panašaus, rodo, kad „Ubuntu“ negalėjo teisingai sąveikauti su atsisiųstu dvejetainiu variantu. Taip yra todėl, kad nors tai, matyt, yra galiojantis „Linux“ dvejetainis failas, jis sukurtas kitam lustų rinkiniui, nei šiuo metu palaiko jūsų branduolys.

Daugelis žmonių, naudojančių „Ubuntu“, naudoja 32 arba 64 bitų procesorius, pagrįstus „Intel“ išleista standartine architektūra, neatsižvelgiant į tai, kas iš tikrųjų pagamino jų mikroschemas. Svarbu atsiminti, kad 64 bitų procesoriai gali veikti 32 bitų režimu, taigi, jei gaunate šią klaidą, net jei turite 64 bitų procesorių, yra tikimybė, kad naudojate 32 bitų „Ubuntu“ versiją. Viskas, ko reikia norint pasakyti, koks jūsų lustas veikia, yra kelios paprastos komandos.

1 metodas: „Arch“ komandos naudojimas

Jei nežinote mikroprocesoriaus, kurį įdiegėte kompiuteryje, tipo, pirmiausia norėsite naudoti komandą arch iš komandinės eilutės. Vykdydami šią komandą matysite tik vieną išvesties eilutę, kuri jums bus grąžinta. Daugeliu atvejų pamatysite „i686“, o tai reiškia, kad naudojate 32 bitų procesorių ir todėl negalite paleisti „x86_64“ dvejetainių failų. Jei vietoj to matote „amd64“ ar kažką panašaus, tada naudojate „x86_64“ procesorių ir bent jau teoriškai turėtumėte sugebėti paleisti daugumą 32 ir 64 bitų dvejetainių failų. Skirtingai nuo „Microsoft Windows“, „Ubuntu Linux“ iš tikrųjų yra tinkami įrankiai, leidžiantys 644 bitų lustų rinkinių vartotojams daugeliu atvejų paleisti 16 bitų „Windows“ programas savo operacinėje sistemoje.

Šie terminai vis dar teisingi, net jei iš tikrųjų nenaudojate to konkretaus lusto modelio. Pavyzdžiui, „i686“ yra tai, kaip „Linux“ nurodo daugelį 32 bitų procesorių, net jei jie iš tikrųjų nėra „Intel 80686“ lustai. Net jei naudojate 64 bitų „Intel“ technologiją, „Arch“ vis tiek gali vadinti jūsų procesorių „amd64“ lustu. Tai nereiškia klaidos ir gali būti saugiai ignoruojama. Galite naudoti katę / proc / cpuinfo arba daugiau / proc / cpuinfo norėdami sužinoti tikslų jūsų naudojamo procesoriaus tipą. Kadangi šio failo eilutės yra ilgos, prieš išleisdami, galbūt norėsite paspausti F11, jei naudojate grafinį terminalo langą. Virtualios konsolės vartotojams, ypač dirbantiems su „Ubuntu“ serveriu, nereikės jaudintis tiek daug.

Galite pamatyti kai kuriuos kitus išvesties tipus, kurie gali dar labiau apriboti jūsų galimybes paleisti programinę įrangą. „Ubuntu“ ilgiausiai palaikė „PowerPC“ architektūrą, kuri yra kai kuriose darbo vietose, taip pat daugelyje „Classic Macintosh“ ir senesnių „OS X Macintosh“ mašinų. Iš tikrųjų vis dar galite rasti šių architektūrų „Ubuntu“ saugyklas, nors šiandien jos mažai palaikomos. Tačiau daugiau nei tikėtina, kad šiuo atveju negalėsite paleisti daugybės „Linux“ dvejetainių failų, kuriuos atsisiuntėte iš interneto, už oficialių saugyklų ribų. Tai nereiškia, kad „Ubuntu“ neveikia šiose mašinose, nors galbūt norėsite pažvelgti į lengvesnį „Lubuntu“ paskirstymą.

2 metodas: failo komandos naudojimas

Komanda failas identifikuoja, kokie yra skirtingi failai, ir paprastai ji yra labai tiksli. Pabandykite nustatyti atitinkamą failą įvesdami failą nameOfProgram norėdami sužinoti, ar gaunate ELF 32 bitų, ar 64 bitų ELF išvestį. Jei jums sakoma, kad tai yra ELF 64 bitų dvejetainis failas, o jūs gavote i686 kaip išvestį iš komandos arch, tai jokiu būdu negalite pagrįstai paleisti savo kompiuteryje. Jei naudojate 64 bitų mikroprocesorių, kuriame veikia 32 bitų „Ubuntu“, galite techniškai iš naujo įdiegti operacinę sistemą, nors tai yra šiek tiek kraštutinis žingsnis norint paleisti vieną programą.

Taip pat yra labai reali galimybė, kad ir kokia menka, jūs galite susidurti su dvejetainiu kompiuteriu, kurį bandant paleisti, jis išmeta šlamšto ženklus į terminalą, net jei jame nuskaitėte kenkėjišką programą. Šie simboliai paprastai būna pastilės formos blokų pavidalu arba stačiakampiai kubeliai, kuriuose yra skaitinės vertės. Kai kurie kompiuterių mokslininkai pastarąjį vadina tofu ir nurodo „Unicode“ reikšmių simbolius, kurių šiuo metu įdiegti šriftai negalės parodyti. Jei terminalas juos taip rodo, galite būti tikri, kad tai nėra nei šrifto klaida, nei nieko bendro su kenkėjiška programa. Greičiau taip yra todėl, kad kompiliuojamas mikroprocesoriaus operacinis kodas dvejetainėje sistemoje yra toks svetimas jūsų sistemai, kad nežino, kaip interpretuoti kai kuriuos kodus.

Geriausias būdas tai išspręsti yra įdiegti tinkamą architektūros paketą. Jei diegiate paketus iš „Ubuntu“, apt-get sistema arba grafinis „Synaptic“ tvarkyklė apėmė jus be jokių problemų. Jei atsisiunčiate paketus iš kito paskirstymo, turėsite rasti tinkamiausią savo architektūrai. Paimkime, pavyzdžiui, „Arch Linux“ pateiktą „gvim“ paketo sąrašą. Nors numatytame pakete yra „x86_64“ architektūra, yra ir „i686“ lustų rinkiniui. Šis veiks 32 bitų mašinose, kurios veikia su „Intel“ pertraukimo struktūra, tačiau nepamirškite, kad terminai „i686“ ir „32 bitai“ visą laiką nėra tarpusavyje susiję, nes kiti „Linux“ palaikomi lustų rinkiniai iš tikrųjų turi savo 32 bitų diegimą.

Vartotojai, tyrinėjantys visą GNU / Linux sceną, gali susidurti su dvejetainiais failais, sudarytais kur kas egzotiškesnėms technologijoms nei šios. „Linux“ iš tikrųjų yra kelių platformų kodo siužetas, todėl pamatysite „OpenRISC“, „MIPS“, „SPARC“, „M32R“, „MN103“, „ARM“, „ARC“, „Alpha“ ir daugelį kitų dvejetainių programų, sukurtų dirbti. Labiau tikėtina, kad negalėsite paleisti nė vieno iš šių, nors ARM yra itin populiari planšetinių kompiuterių ir išmaniųjų telefonų platforma. Tai taip pat yra platforma, kuria remiasi „Raspberry Pi“, o tai reiškia, kad jei jūs iš tikrųjų naudojate „Ubuntu“ mobiliajame įrenginyje arba „Raspberry Pi“ „Ubuntu MATE“ paskirstymą, jums jų tikrai reikės vietoj „Intel“ 32 bitų arba „x86_64“ dvejetainių failų.

$config[zx-auto] not found$config[zx-overlay] not found