Не могу запустить бинарный файл ошибка формата выполняемого файла

В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой: 


bash: /путь/до/файла: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла

 Если у вас англоязычная локаль, то ошибка будет примерно такой:

 bash: ./program: cannot execute binary file: Exec format error

 В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.

  •  Причинами данной ошибки могут быть:
  • попытка запустить 64-битный файл на 32-битной системе
  • файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
  • вы пытаетесь выполнить не исполнимый файл, а ссылку
  • файл размещён в совместной (shared) папке

Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:

 file /путь/до/программы

 Пример вывода: 


program: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=03ada11d91d298913990bfc074ccc3a380d26b69, with debug_info, not stripped

 Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.

 Ещё один пример: 


program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped

 Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.

Если вы не знаете, какой битности ваша система, то выполните команду: 


uname -m

 Для 64-битных систем будет выведено x86_64, а для 32-битных – x86

О разрядности дистрибутивов Linux и о программ 

На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.

На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.

Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:

  • скачать файл подходящей для вас битности и архитектуры
  • если вы самостоятельно компилировали файл из исходного кода, то заново скомпилируйте для процессора вашей архитектуры

Запуск ARM файлов в Linux 

Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:

 sudo apt install binfmt-support qemu qemu-user-static

Заключение

Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.


0

2

При попытке установить и/или обновить java выдается

java -version
bash: /usr/bin/java: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла

но судя по всем остальным попыткам посмотреть что с java, она есть

update-alternatives --config java
Есть 2 варианта для альтернативы java (предоставляет /usr/bin/java).

  Выбор   Путь                     Приор Состояние
------------------------------------------------------------
  0            /opt/java/jdk1.8.0/bin/java   100       автоматический режим
  1            /opt/java/jdk1.8.0/bin/java   100       ручной режим
* 2            /opt/jre-10.0.2/bin/java      1         ручной режим

так же пробовал

apt-get install default-jre
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Уже установлен пакет default-jre самой новой версии (2:1.10-68).
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 1241 пакетов не обновлено.

как решить не имею ни малейшего понятия

Photo by Jivacore/Shutterstock.com

Linux has been reworked heavily since it first came out to the point that it’s no longer an OS for terminal kings. Just about everyone can use it now thanks to the much better user interfaces that we see in modern Linux distros. However, that doesn’t mean it can’t be frustrating at times. 

In this article, we’re taking a look at the “cannot execute binary file: exec format error” issue and giving you a few solutions on how to get rid of the problem. 

Also read: How to make a file executable in Linux?


Check the architecture

The first thing you should do is ensure you’ve got the right bin file. Binary files made for 32-bit systems won’t work on 64-bit systems and vice-versa. You can check the architecture of any file by using the command below.

file filename

How to fix Cannot execute binary file: exec format error?

If the architecture doesn’t match between your file and the PC you’re running it on, try running the corresponding binary file for the matching architecture. 


Check the file

Binary files can be run on Windows, Linux and macOS. However, binaries made for one OS won’t run on the others. Generally, these files have different file formats to help users distinguish between them. If you’re trying to run a binary file made for Windows on a Linux distro, it’s obviously not going to work. 

If you must run the binary on Linux however, we recommend downloading Wine and using it to run the file. Wine is a compatibility layer capable of running Windows applications on POSIX-compliant operating systems, including Linux and macOS. 


Install GCC and Gfortran

GCC and Gfortran are required for several binary files to compile and execute properly. You can install them by typing the command below in your terminal. 

sudo apt-get install gfortran && sudo apt-get install build-essential

How to fix Cannot execute binary file: exec format error?

Now try running your binary file again and it should run without a problem — fixing the ‘cannot execute binary file’ error.


Uncompress the file

Sometimes binary files are compressed to make them easier to share over the internet. Try uncompressing the file to see if that helps you run it fine. Run the following commands on at a time. 

xz -d ./filename
chmod +x ./filename
./filename

Check file permissions

Another potential reason for your binary file not running could be that the user doesn’t have permission to change or read the file. You can fix this by typing the following command in the terminal. 

chmod +x filename

How to fix Cannot execute binary file: exec format error?

Once the permissions are set, you can run the file by typing this.

./filename

Use Dos2unix

The Dos2unix command can sometimes help binaries made for DOS to run on UNIX systems. Try using the following command to see if your file runs or not. 

dos2unix filename.bin

If we’ve missed out on any fixes that helped you solve the ‘cannot execute binary file’ error, please comment down below with the fix.

Also read: What does ./ mean in Linux?

Am trying to deploy my node express app to heroku from my windows 10 os and am using the git bash terminal, but anytime i try to run the heroku command it returns this error

‘/c/Users/user/AppData/Roaming/npm/node_modules/heroku-cli/bin/run:
line 19: /c/Program Files/nodejs/node: cannot execute binary file:
Exec format error’

Please does anyone know how i could solve this challenge?

PS: i ran the command as administrator on git bash

asked Jul 11, 2017 at 21:51

dipp's user avatar

10

From heroku-cli GitHub repository I can see the following 19th line of the run file:

node "$DIR/run.js" "$@"

Looks like it tries to run run.js file but fails because can’t recognise node as an executable binary file.

It’s possible that you have a NodeJS version with wrong architecture or installation was not successful. Anyway seems like node is not installed correctly.

So I would uninstall it properly and install it again regarding architecture of the OS

Community's user avatar

answered Jul 11, 2017 at 22:26

LEQADA's user avatar

LEQADALEQADA

1,8833 gold badges22 silver badges41 bronze badges

  • Печать

Страницы: [1] 2  Все   Вниз

Тема: Помогите с запускам бинарного файла!  (Прочитано 17906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
Ухлин Павел

Скачал клиент Savage 2 когда пытаюсь установить через терминал получаю:
ogan@Shadow:~/Desktop$ chmod +x Savage2Install.bin
ogan@Shadow:~/Desktop$ ./Savage2Install.bin
bash: ./Savage2Install.bin: не могу запустить бинарный файл
ogan@Shadow:~/Desktop$

 :(
Подскажите плз


Оффлайн
MaSsoL


Оффлайн
Ухлин Павел

Э… Непонял) Можно на русском языке) А то я в этом не особо шарю)


Оффлайн
MaSsoL

в консоле набери ls -l и вывод дай сюда


Оффлайн
Ухлин Павел

ogan@Shadow:~/Desktop$ ls -l
итого 803468
-rw-r—r— 1 ogan ogan     14336 2009-12-13 21:09 blank10_3.xls
-rw-r—r— 1 ogan ogan 821917929 2009-06-13 22:41 Savage2Install-1.5.0-x86_64.bin
drwxr-xr-x 9 ogan ogan      4096 2010-01-03 22:46 xXx
drwxr-xr-x 2 ogan ogan      4096 2010-01-03 22:46 МГУ
ogan@Shadow:~/Desktop$


Оффлайн
xkool

у тебя файл Savage2Install-1.5.0-x86_64.bin ,а ты запускаешь Savage2Install.bin

Лучше маленький доллар, чем большое спасибо.


Оффлайн
Ухлин Павел

у тебя файл Savage2Install-1.5.0-x86_64.bin ,а ты запускаешь Savage2Install.bin

ogan@Shadow:~/Desktop$ ./Savage2Install-1.5.0-x86_64.bin
bash: ./Savage2Install-1.5.0-x86_64.bin: Permission denied
ogan@Shadow:~/Desktop$ sudo ./Savage2Install-1.5.0-x86_64.bin
[sudo] password for ogan:
sudo: ./Savage2Install-1.5.0-x86_64.bin: command not found


Оффлайн
MaSsoL

ну нет на нем исполнительности.

$ chmod 777  ./Savage2Install-1.5.0-x86_64.bin
$ ./Savage2Install-1.5.0-x86_64.bin


Оффлайн
Ухлин Павел

ну нет на нем исполнительности.
$ chmod 777  ./Savage2Install-1.5.0-x86_64.bin
$ ./Savage2Install-1.5.0-x86_64.bin

ogan@Shadow:~/Desktop$ chmod 777  ./Savage2Install-1.5.0-x86_64.bin
ogan@Shadow:~/Desktop$ ./Savage2Install-1.5.0-x86_64.bin
bash: ./Savage2Install-1.5.0-x86_64.bin: не могу запустить бинарный файл

Всё равно не пашет(((


akuma404

естесственно.намутили с правами.достаточно было сделать исполняемым.потом попробовать sudo su и там устанавливать


Оффлайн
Ухлин Павел

естесственно.намутили с правами.достаточно было сделать исполняемым.потом попробовать sudo su и там устанавливать

А поподробнее? Может получится)))


akuma404

ну верни старые права chmod 755
потом попробуй запустить
~/Desktop/Savage2Install-1.5.0-x86_64.bin
не поможет — попробуй
sh ~/Desktop/Savage2Install-1.5.0-x86_64.bin
не поможет — sudo su
и снова те попытки


Оффлайн
Mam(O)n

Ухлин Павел, у тебя система 32 или 64 бита?


Оффлайн
dedandrei

 Чё у тебя хоть за файл? С какой целью запускаеш? Где взял? Какая ОС?


Пользователь решил продолжить мысль 04 Января 2010, 00:38:08:


Чё у тебя хоть за файл? С какой целью запускаеш? Где взял? Какая ОС? Такое впечатление , что ты как в винде инсталлятор запускаешь.

« Последнее редактирование: 04 Января 2010, 00:38:08 от dedandrei »


Оффлайн
MaSsoL

Это действительно инсталятор:) и довольно похож на вендовый. Сам ставил себе такую игрулину недавно. Но что то не помню такого ступора, chmod +x и все работало. Скорей всего архитектура не та.
Скиньте сюда вывод:

uname -m


  • Печать

Страницы: [1] 2  Все   Вверх

Возможно, вам также будет интересно:

  • Не могу запустить windows ошибка обновления
  • Не могу запустить торрент выдает ошибку
  • Не могу запустить танки выдает ошибку
  • Не могу запустить sims 3 ошибка инициализации
  • Не могу запустить origin ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии