В операционной системе 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
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
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
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
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
answered Jul 11, 2017 at 22:26
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 Все Вверх