Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.
Причинами данной ошибки могут быть:
- попытка запустить 64-битный файл на 32-битной системе
- файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
- вы пытаетесь выполнить не исполнимый файл, а ссылку
- файл размещён в совместной (shared) папке
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 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:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Как запустить бинарный файл?
Господа специалисты как запустить бинарный файл?И можно ли с диска Ubuntu 7.10 взять дрова для установленной Mandriva.
Re: Как запустить бинарный файл?
>И можно ли с диска Ubuntu 7.10 взять дрова для установленной Mandriva.
можно, но не человеку который не знает:
>как запустить бинарный файл
chmod +x file && ./file
Re: Как запустить бинарный файл?
>chmod +x file && ./file Спасибо попробую.Учится не когда не поздно.
Re: Как запустить бинарный файл?
предварително советую man chmod 🙂
Re: Как запустить бинарный файл?
и еще man bash/zsh/sh/etc — по выбору
Re: Как запустить бинарный файл?
man chmod +x file && ./file так полным текстом?Что-ли? ИЛИ
man bash/zsh/sh/etc +file
Re: Как запустить бинарный файл?
Не, man — это мануал читать, chmod +x file && ./file — это тебе для запуска.
Re: Как запустить бинарный файл?
cd /home/user/bin_file_location/
chmod +x bin_file
./bin_file
(если файл вообще является исполняемым в linux)
Re: Как запустить бинарный файл?
>(если файл вообще является исполняемым в linux)
Драйвер нужный на диске с другим дистр.
Re: Как запустить бинарный файл?
>>(если файл вообще является исполняемым в linux) Драйвер нужный на диске с другим дистр.
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.
Причинами данной ошибки могут быть:
-
- попытка запустить 64-битный файл на 32-битной системе
-
- файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
-
- вы пытаетесь выполнить не исполнимый файл, а ссылку
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 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:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Запуск бинарных файлов
Помогите, пожалуйста, с такой проблемой: в Убунту не могу запустить ни один бинарный файл на смонтированном разделе. Ругается, пишет:
unable to execute file_name Отказано в доступе
И через sudo то же самое. Хотя флаг исполняемого файла выставлен, флаг exec при монтировании имеется, все права на раздел у моего пользователя.
да, но в свойствах файла «контекст selinux: неизвестно». я правильно понимаю, это значит, что ни какие ограничения не включены?
скорее всего, раздел смонтирован с опцией noexec. вывод mount пожалуйста.
не дочитал пост, сорри.
Зависит от типа policy. Если полиси установлена в targeted (как в RH/CentOS, SELINUXTYPE=), то огранияений быть не должно.
chmod a+x filename ?
Что за ФС?
>chmod a+x filename ? пробовал не помогло
хм, у меня установлена только библиотека libselinux1, но никаких других утилит нет. что мне лучше всего поставить для настройки для настройки доступа?
setenforce 0 && ./filename ?
> не помогло
_как_ не помогло? что за права теперь на файл? есть ли что в dmesg? какая, всё-таки, ФС?