2012-06-12 21:26:53 +0000 2012-06-12 21:26:53 +0000
88
88

Как я могу исправить ошибку "не могу выполнить двоичный файл"?

Когда я вхожу в систему по SSH, все, что я вижу, это…

-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected

Здесь я ничего не могу сделать. Такие команды, как halt, poweroff, reboot будут возвращать command not found.

Как я могу это исправить? Я использую Debian Squeeze Linux

Ответы (7)

92
92
92
2012-06-13 03:07:20 +0000

Обычно это сообщение об ошибке означает, что Linux не распознает файл как скрипт оболочки или как исполняемый файл.

Обычно причина заключается в запуске исполняемого файла на неправильной архитектуре - если вы попытаетесь запустить x86 исполняемых файлов на ARM процессоре, то появится это сообщение.

Возможно ли, что /usr/bin/id было перезаписано?

26
26
26
2012-06-13 01:27:14 +0000

Попробуйте запустить его, используя ./executablefilename вместо имени исполняемого файла sh. В конце концов, это не скрипт оболочки.

9
9
9
2015-06-19 11:55:00 +0000

Проблема заключается в запуске бинарного файла для другой архитектуры процессора. Вы можете использовать objdump (из binutils) для проверки архитектуры двоичных файлов. Вы можете использовать uname для проверки архитектуры машины.

Например, я столкнулся с этой ошибкой “cannot execute binary file” при установке FF.Communicator - плагина Firefox для chrome (чтобы я мог запускать страницы, использующие java-апплеты).

  • objdump показывает, что двоичный файл 64-битный elf64-x86-64
  • uname показывает, что моя машина 32-битная i686

  • objdump на рабочем двоичном файле на моей машине показывает, что он 32-битный elf32-i386

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

Для пользователей Mac OSX вы можете узнать информацию об архитектуре конкретного файла, используя команду “file”:

$ file filename_here
```.
6
6
6
2012-06-12 21:51:34 +0000

Я делаю некоторые дикие догадки здесь, но похоже, что происходит следующее:

  1. Вы входите в систему по SSH, инициируя bash для запуска ~/.profile или ~/.bashrc для настройки вашего окружения для вас (это нормально).
  2. В какой-то момент он пытается выполнить /bin/id, чтобы получить uid, что приводит к ошибке целочисленных выражений, и завершает скрипт до того, как он сможет настроить вашу $PATH.
  3. Поскольку ваша $PATH не установлена, bash может выполнять команды только по полному указанному пути.

Используйте export PATH=/bin:/usr/bin:/sbin:/usr/sbin для исправления проблемы с $PATH до тех пор, пока вы не сможете исправить первопричину сбоя /bin/id.

0
0
0
2018-10-24 14:01:42 +0000

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

в очень простом примере, если вы попытаетесь выполнить команду `w’ подобно

$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file

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

Хотя, для остальных команд, эти команды остановки, выключения, перезагрузки и т.д. являются командами, принадлежащими корневой системе, и для запуска и выполнения требуемой операции нужны prilveges суперпользователя. Обычные пользователи не могут запустить их, другое объяснение заключается в том, что эти команды помещаются в /sbin/ и /usr/sbin, которых может не быть в вашей переменной $PATH (которая используется для проверки команд, находящихся под вашей ответственностью).

0
0
0
2012-06-12 22:29:57 +0000

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

-1
-1
-1
2018-07-25 08:43:45 +0000

Вы запустили неверную версию программы установки, например, 64-битную машину и пытаетесь установить 32-битную версию программы установки.

Похожие вопросы

6
10
19
12
6