Я загрузил игру (Shank), но файл bin не запускается. Ошибка, которая появляется при попытке запуска исполняемого файла:
bash: ./shank-linux-120720110-1-bin: No such file or directory
Выполните этот ответ только в том случае, если на выходе file file-name
отображается
file-name: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, not stripped
Для запуска 32-битного исполняемого файла в 64-битном многоэкранном режиме Ubuntu, вам нужно добавить архитектуру i386
, а также установить libc6:i386
, libncurses5:i386
, libstdc++6:i386
эти три пакета библиотеки.
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
./file-name
Вероятно, вы пытаетесь запустить 32-битный двоичный код в 64-разрядной системе, в которой не установлена 32-разрядная поддержка.
Есть три случая, когда вы можете получить сообщение " Нет такого файла или каталога ":
file shank-linux-120720110-1-bin
отображает что-то вроде «ELF 32-bit LSB executable ...»), и все же, когда вы пытаетесь выполнить его, вам говорят, что файл не существуют. Сообщение об ошибке в этом последнем случае, по общему признанию, запутывает. Это говорит о том, что ключевой компонент среды выполнения, необходимый для запуска программы, отсутствует. К сожалению, канал, через который сообщается об ошибке, имеет место только для кода ошибки, а не для этой дополнительной информации, что это действительно среда выполнения, которая виновата. Если вы хотите получить техническую версию этого объяснения, прочитайте Сообщение «Не найдено» при запуске 32-разрядного двоичного файла в 64-битной системе .
Команда file
расскажет вам, что это за бинарный файл. За некоторыми исключениями вы можете запускать только двоичный код для архитектуры процессора, для которого предназначен выпуск Ubuntu. Основное исключение состоит в том, что вы можете запускать 32-разрядные (x86, aka IA32) двоичные файлы в 64-разрядных (amd64, aka x86_64) системах.
В Ubuntu до 11.04 для запуска 32-разрядного двоичного кода на 64-битной установке вам необходимо установить пакет ia32-libs
. Возможно, вам понадобится установить дополнительные библиотеки (вы получите явное сообщение об ошибке, если вы это сделаете).
Начиная с 11.10 (oneiric), введенного multiarch , вы все равно можете установить ia32-libs
, но вы можете выбрать более тонкий подход, достаточно получить libc6-i386
(плюс любая другая необходимая библиотека).