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

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

Новости IT
В закладки


В операционной системе 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)
Добавить комментарий
Прокомментировать
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Решение проблемы: не найдена определённая версия библиотеки
Иногда программа не запускается из-за отсутствия библиотеки определённой версии, при этом в системе может присутствовать эта самая библиотека, но другой версии.  
Как обновиться до Linux Mint 19 и что в ней нового
Linux Mint 19 – это релиз с длительной поддержкой до 2023 года. Он поставляется с обновлённым программным обеспечением и приносит усовершенствования и множество
Linux mint 19
Linux mint 19
Linux mint 19
08.06.18 Новости IT
Linux mint 19 (скачать) Развиваемый сообществом дистрибутив Linux mint, основанный на Ubuntu и Debian, который ставит целью предоставить пользователю «современную,
Linux (видео уроки)
Linux (видео уроки)
Linux (видео уроки)
11.11.17 Новости IT / Наука
Linux (видео уроки) Обзор Linux видео уроки 1. Введение в ОС Linux/Unix Ubuntu. Видео linux уроки 2017 года. gnu linux operating system. Linux администрирование и linux
Rosa Linux - Linux из России
Rosa Linux - Linux из России
Rosa Linux - Linux из России
14.03.18 Новости IT / Наука
Rosa Linux - Linux из России. ROSA Fresh. Сделана для дома. Создана для вас. ROSA Fresh — это современная отечественная операционная система Linux, создаваемая
Linux Deepin OS
Linux Deepin OS
Linux Deepin OS
12.01.18 Новости IT
Новая версия Deepin 15 включает в себя новый дизайн Центра Управления и компьютера, он имеет новый размытый и прозрачный стиль, также включены новые взаимодействия для
Григорий Гагарин: Какой линукс выбрать? Какой linux лучше?
Какой линукс выбрать? Какой linux лучше? Сегодня мы разберемся какие дистрибутивы линукс бывают и какой из них самый лучший. Первое что нужно понять: дистрибутивов
Linux 4 Me: Linux Mint 18.1 Serena Cinnamon (Подробный обзор)
Linux Mint 18.1 Serena Cinnamon (Подробный обзор) Подробный обзор Beta версии Linux Mint 18.1 Serena Cinnamon Linux Mint команда объявила о выпуске обновления для 18.x
Войти через: