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

Решение проблемы с ошибкой «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:

Заключение

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

Читайте также:  Горячие клавиши windows 10 биос

Источник

Как запустить бинарный файл в Linux

У меня есть файл с именем commanKT и я хочу запустить его в терминале Linux. Может кто-то помочь, дав команду запустить этот файл? Я пытался ./commonRT , но я получаю сообщение об ошибке:

8 ответов

Чтобы выполнить двоичный файл или .run-файл в Linux из оболочки, используйте косую черту друга

и если произойдет сбой, скажем, из-за разрешений, вы можете попробовать это перед выполнением

Надеюсь, это поможет

🙂 Если вы не опечатка, почему вы используете ./commonRT вместо ./commonKT ??

Возможно, вы скомпилировали бинарный файл с несовместимыми параметрами архитектуры на хосте сборки и хосте выполнения. Можете ли вы взглянуть на включенные настройки цели через

на вашем хосте сборки? В частности, переменная COLLECT_GCC_OPTIONS может дать вам ценную отладочную информацию. Затем взгляните на возможности процессора на хосте выполнения через

Обратите внимание на несоответствия, такие как -msse4.2 [enabled] на хосте сборки, но отсутствует sse4_2 флаг в возможностях процессора.

Если это не помогает, предоставьте выходные данные ldd commonKT как на хосте сборки, так и на хосте выполнения.

Это ответ на @craq:

Я только что скомпилировал файл из источника C и установил его для запуска с помощью chmod. От gcc не было ни предупреждений, ни сообщений об ошибках.

Я немного удивлен, что вам пришлось «установить его на исполняемый файл» — мой gcc всегда устанавливает сам флаг исполняемого файла , Это говорит о том, что gcc не ожидал, что это будет конечный исполняемый файл, или что он не ожидал, что он будет исполняемым в этой системе.

Теперь я попытался создать объектный файл, вот так:

( hello.c — типичная программа «Hello World».) Но мое сообщение об ошибке немного отличается:

С другой стороны, таким образом, выходные данные команды file идентичны вашей:

Тогда как, если я правильно скомпилирую, его вывод будет намного длиннее.

Я говорю следующее: я подозреваю, что это как-то связано с тем, как вы компилируете и связываете свой код. Может быть, вы можете пролить свет на то, как вы это делаете?

Единственный способ, который подходит мне ):

Затем запустите его, написав

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

опция компиляции -c делает компиляцию только компиляцией и сборкой, но без ссылки.

Если это не опечатка, как указывалось ранее, это может быть неправильными параметрами компилятора, такими как компиляция 64-битной под 32-битной. Это не должен быть набор инструментов.

полный путь для двоичного файла. Например: /home /vitaliy2034 /имя_бинального_файла. Или же используйте директиву «./+binary_file_name». ‘./’ в системе unix возвращает полный путь к каталогу, в котором вы открываете терминал (оболочку). Я надеюсь, что это помогает. Извините за мой английский язык)

Источник

Запуск исполняемых файлов.

Сразу укажу, что я полнейший нуб. Учусь пользоваться линуксом. Сейчас стоит fedora 22. Не запускаются скомпилированные исполняемые файлы. Компилирую СИшные файлики через ком строку. «gcc -c file.c -o file.o» и «gcc file.o -o file». После этих действий выдает ошибку при запуске через sh «не могу запустить бинарный файл.» Не хочет запускать ни file.o, ни file. Переустанавливал bash и gcc через ком строку с помощью dnf reinstall, не помогло. Мне интересен любой способ решения этой проблемы, который я буду способен в кратчайшие сроки освоить.

Читайте также:  Как загрузиться windows с загрузочного диска

Предлагаешь нам самим догадаться, как именно ты запускаешь этот файл?

Дай право на выполнение:

[root@localhost программы]# gcc -c pr1.c -o pr1.o [root@localhost программы]# gcc pr1.o -o pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# chmod +x pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# ls pr1 pr1.c pr1.o адрес [root@localhost программы]# chmod a=x pr1.o [root@localhost программы]# pr1.o bash: pr1.o: команда не найдена. ^C [root@localhost программы]# sh pr1.o pr1.o: pr1.o: не могу запустить бинарный файл [root@localhost программы]# ./pr1.o bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла [root@localhost программы]# ./pr1 указатель не определен

[root@localhost программы]# chmod +x pr1.o

[root@localhost программы]# ./pr1.o

bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла

Ну фиг его знает. Выложи что ты там собираешь.

Да, вообще все мной собранные проги, которые даже раньше работали, не запускаются.

Источник

Как устанавливать bin файлы в Linux

Не смотря, на то, что большинство программ в операционной системе Linux (в моем случае Ubuntu) можно установить из Центра приложений, тем самым обеспечивая совместимость с системой, иногда вам может понадобится установить новую версию программы или наоборот, старую, которой может не оказаться в списке.

Такие программы чаще всего распространяются, в формате .bin также известные как бинарные файлы. Бывает, что они запакованы в архив, а иногда как исполняемые файлы. Установка bin linux, может быть произведена через терминал либо же через графический интерфейс. Рассмотрим оба варианта.

Установка bin файлов в Linux

Консольный вариант

1. Для начала в файловом менеджере, нужно найти наш бинарник.

2. Откроем терминал, сочетанием клавиш Ctrl+Alt+T.

3. Зайдем в режим суперпользователя (под рутом). Для этого введем следующую команду в терминале:

Затем нужно ввести пароль.

4. Теперь, в терминале нам нужно зайти в ту директорию, где расположен наш бинарник. В моем случае это будет так:

5. Дайте права на выполнение файла .bin, командой:

chmod +x thefile.bin

В моем случае это выглядит так:

chmod +x clip2net.bin

6. Теперь выполните его. Для этого находясь уже в той директории, где находится бинарный файл введем точку и слэш, затем имя файла. В случае со мной это выглядит так:

7. После этой команды, установщик программы запустился и спрашивает меня на каком языке я хотел бы установить bin файл в linux.

8. Далее устанавливаем программу как обычно это делается в ОС Windows.

Графический вариант

Он ненамного проще, но для новичков, которые недавно перешли с Windows будет понятнее. Первые 3 пункта из консольного варианта все же придется выполнить. Затем нужно выбрать файл, нажать правой кнопкой мыши, выбрать пункт «свойства». На вкладке права, нужно поставить галочку напротив пункта «Разрешить выполнение файла как программы».

Читайте также:  Закорючки вместо русских букв windows 10

Закрываем окно. И перетаскиваем этот файл в терминал, запущенный от суперпользователя, имя файла и путь уже впишутся автоматически, остается лишь нажать на кнопку «Enter». Далее, вы можете установить bin файл, как и в первом варианте. На этом все.

Источник

Решение проблемы с ошибкой «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:

Заключение

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

Источник

Оцените статью