Я скачал игру (Shank), но файл bin не запускается. Ошибка, которая отображается при попытке запустить исполняемый файл:
bash: ./shank-linux-120720110-1-bin: No such file or directory
64-bit
files
games
executable
Francesco
источник
источник
Ответы:
Вероятно, вы пытаетесь запустить 32-разрядный двоичный файл в 64-разрядной системе, в которой не установлена 32-разрядная поддержка.
В трех случаях вы можете получить сообщение «Нет такого файла или каталога»:
file shank-linux-120720110-1-bin
отображает что-то вроде «ELF 32-битный исполняемый файл LSB…»), и все же, когда вы пытаетесь выполнить его, вам говорят, что файл не существует.Сообщение об ошибке в этом последнем случае, по общему признанию, сбивает с толку. Это говорит о том, что отсутствует ключевой компонент среды выполнения, необходимый для запуска программы. К сожалению, канал, по которому сообщается об ошибке, имеет место только для кода ошибки, а не для этой дополнительной информации, которая действительно виновата в среде выполнения. Если вам нужна техническая версия этого объяснения, прочитайте сообщение Получение «Не найдено» при запуске 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
источник
ldd
чтобы проверить, если вы пропустили библиотеку.ldd kgio_ext.so
может сказать что-то подобноеlibruby.so.2.3 => not found
среди другихbash: ...some...path...: No such file or directory
может появиться: после перемещения исполняемого файла. Кажется, что Bash кеширует пути к исполняемым файлам, найденным в $ PATH; бежать,hash -r
чтобы очистить это. См: unix.stackexchange.com/a/5610/1135264-битные системы Ubuntu Multiarch
Следуйте этому ответу, только если вывод
file file-name
показывает,Для того, чтобы запустить 32 - битный исполняемый файл в 64 битном мульти-арочной системы Ubuntu, вы должны добавить
i386
архитектуру , а также вы должны установитьlibc6:i386
,libncurses5:i386
,libstdc++6:i386
эти три библиотеки пакетов.источник
libselinux1:i386
Установив deb для 32-битной системы, я понял, что мне не хватает некоторых библиотек (в дополнение к ia32-libs и libc6). Сначала я решил эту проблему, дав следующую команду:
Тогда я получил еще одну ошибку:
Очевидно, что эти библиотеки были правильно установлены. Не вдаваясь в детали, мне пришлось связывать библиотеки вручную. Тогда я понял, что через Synaptic можно было бы также проще установить следующие пакеты:
После этого следующей проблемой был черный экран во время игры, который я решил, заменив исполняемый файл в / Shank / bin следующим: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
Надеюсь это кому-нибудь пригодится. Если вам нужна дополнительная помощь или более подробная информация, пожалуйста, не стесняйтесь связаться со мной.
источник
Вот расшифровка стенограммы, показывающая немного больше о природе проблемы и о том, как ее исправить, начиная с Ubuntu 16.04. Обратите внимание, что хотя
file
отчеты «динамически связаны», ониldd
«не являются динамическими исполняемыми файлами».После установки libc6: i386 все начинает улучшаться ...
Чтобы завершить работу, вам может понадобиться определить и установить дополнительные библиотеки по одной за раз ...
Я не знаю, существует ли систематический способ определения правильных библиотек для установки. Есть немного догадок, отображающих сообщения об ошибках на имена пакетов (помогает завершение табуляции).
источник
ldd
(неправильно) сообщает "не динамический исполняемый файл".Чтобы расширить ответ @Gilles, есть как минимум три сценария, приводящие к этой ошибке:
file
команда работает), создавая удивительное сообщение об ошибке. Это может означать, что есть проблема с загрузчиком.Категории проблем с загрузчиком:
Загрузчик исполняемого файла не существует. Вы можете проверить это с помощью команды file и посмотреть, существует ли загрузчик. Например
Обратите внимание
interpreter /lib64/ld-lsb-x86-64.so.3
; если этот файл не существует, вам необходимо установить его. Для данного конкретного загрузчика 16.04 ответ оказалсяsudo apt-get install lsb
.Проблемы с загрузчиком скрипта (см. Этот ответ ).
ldd <file-name>
для проверки любых «не найденных» библиотек. Смотрите этот ответ для получения дополнительной информации.Загрузчик не существует может быть из-за несоответствия 32/64 бит или по другой причине. Могут быть и другие ошибки загрузчика, о которых я не знаю.
источник
file lmutil
не показывал переводчик, ноldd
сделал, и установкаlsb
решила проблему.