Как да поправя ‘не може да изпълни двоичен файл: Грешка във формат Exec’ на Ubuntu



Опитайте Нашия Инструмент За Премахване На Проблемите

Въпреки че не трябва да се случва при използване на официалните хранилища на apt-get, ако изтеглите софтуер от Интернет и го стартирате, тогава има шанс да видите страховитите bash: ./nameOfProgram: не може да изпълни двоичен файл: Грешка във формат Exec . Тази грешка, която обикновено е последвана от bash: ./nameOfProgram.sh: Разрешението е отказано или нещо подобно, показва, че Ubuntu не е успял да се свърже правилно с двоичния файл, който сте изтеглили. Това е така, защото макар да изглежда валиден двоичен файл на Linux, той е проектиран за различен чипсет, отколкото ядрото ви поддържа в момента.



Повечето хора, които използват Ubuntu, са на 32-битови или 64-битови процесори, базирани на стандартна архитектура, която Intel пусна, независимо от това кой всъщност е направил техните микрочипове. Важно е да запомните, че 64-битовите процесори могат да работят в 32-битов режим, така че ако получавате тази грешка, въпреки че имате 64-битов процесор, има шанс да използвате 32-битова версия на Ubuntu. Необходими са само няколко команди, за да разберете как работи вашият чип.



Метод 1: Използване на командата arch

Ако не сте запознати с типа микропроцесор, който сте инсталирали на машината си, първо ще искате да използвате командата arch от командния ред. Ще видите само един ред изход, върнат ви след изпълнението на тази команда. В много случаи ще видите i686, което означава, че сте на 32-битов процесор и следователно не можете да стартирате x86_64 двоични файлове. Ако вместо това видите amd64 или нещо подобно, значи сте на процесор x86_64 и поне теоретично трябва да можете да изпълнявате повечето 32-битови и 64-битови двоични файлове. За разлика от Microsoft Windows, Ubuntu Linux всъщност съдържа подходящите инструменти, които позволяват на потребителите на 644-битови чипсети да изпълняват 16-битови програми на Windows в тяхната операционна система в много случаи.



Тези условия все още са верни, дори ако всъщност не използвате този конкретен модел микрочип. Например i686 е начинът, по който Linux се отнася до много 32-битови процесори, дори ако всъщност не са чипове Intel 80686. Дори ако използвате 64-битова технология Intel, arch все пак може да нарече процесора ви чип amd64. Това не означава грешка и може безопасно да бъде игнорирано. Можете да използвате котка / proc / cpuinfo или по / proc / cpuinfo за да разберете точния тип процесор, който използвате. Тъй като редовете в този файл са дълги, може да искате да натиснете F11, преди да го издадете, ако използвате графичен терминален прозорец. Потребителите на виртуална конзола, особено тези, които работят със сървъра на Ubuntu, няма да се притесняват толкова много.

Може да видите някои други видове изход, които може допълнително да ограничат опциите ви, когато става въпрос за работещ софтуер. Ubuntu поддържа архитектурата PowerPC за най-дълго време, която се среща в някои работни станции, както и в много класически Macintosh и по-стари машини OS X Macintosh. Всъщност все още можете да намерите хранилища на Ubuntu за тези архитектури, въпреки че те получават малко подкрепа днес. В този случай обаче повече от вероятно няма да можете да стартирате много бинарни файлове на Linux, които изтегляте от интернет, извън официалните хранилища. Това не означава, че Ubuntu не работи на тези машини, въпреки че може да искате да разгледате по-леката дистрибуция на Lubuntu.

Метод 2: Използване на файловата команда

Командата за файл идентифицира какво съдържат различните файлове и обикновено е много точна. Опитайте да идентифицирате въпросния файл, като напишете файл nameOfProgram за да видите дали получавате ELF 32-битов или ELF 64-битов като изход. Ако ви каже, че е ELF 64-битов двоичен файл и сте получили i686 като изход от командата arch, тогава няма начин разумно да го стартирате на вашата машина. Ако сте на 64-битов микропроцесор, работещ с 32-битова Ubuntu, тогава можете технически да преинсталирате операционната система, въпреки че това е малко крайна стъпка, за да стартирате една програма.



Съществува и съвсем реалната възможност, колкото и лека да е, вместо това да попаднете на двоичен файл, който при опит да го стартира изхвърля нежелани знаци към терминала, дори ако сте изпълнили сканиране за него. Тези символи обикновено са под формата на блокове под формата на таблетки или алтернативно правоъгълни кубчета, които имат числови стойности в себе си. Някои компютърни учени наричат ​​последното тофу и представляват Unicode стойностите на символите, които в момента инсталираните ви шрифтове няма да могат да покажат. Ако терминалът ги показва по този начин, тогава можете да бъдете сигурни, че това не е нито грешка в шрифта, нито нещо общо със злонамерен софтуер. По-скоро това е просто защото компилираният микропроцесорен операционен код вътре в двоичния файл е толкова чужд на вашата система, че не знае как да тълкува част от кода.

Най-добрият начин да поправите това е да инсталирате подходящия пакет за вашата архитектура. Ако инсталирате пакети от Ubuntu, тогава системата apt-get или графичният мениджър Synaptic ви покриват без никакви проблеми. Ако изтегляте пакети от друга дистрибуция, ще трябва да намерите правилния за вашата архитектура. Вземете например списъка на Arch Linux на пакета gvim. Докато пакетът по подразбиране включва архитектурата x86_64, има и такъв за чипсета i686. Този ще работи на 32-битови машини, които работят със структурата на прекъсванията на Intel, но не забравяйте, че термините i686 и 32-бита не се включват взаимно през цялото време, тъй като други чипсети, които Linux поддържа, всъщност имат свои собствени 32-битови реализации.

Потребителите, изследващи цялата сцена на GNU / Linux, може да се натъкнат на двоични файлове, съставени за далеч по-екзотични технологии от тях. Linux е наистина междуплатформена кодова сцена, така че ще видите OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha и много други стандартни двоични файлове са компилирани за работа. Повече от вероятно няма да можете да стартирате нито едно от тях, въпреки че ARM е изключително популярна платформа за таблети и смартфони. Това е и платформата, на която се основава Raspberry Pi, което означава, че ако действително използвате Ubuntu на мобилно устройство или дистрибуцията Ubuntu MATE за Raspberry Pi, всъщност ще ви трябват вместо 32-битови или x86_64 бинарни файлове на Intel.

4 минути четене