Я скачал игру (Shank), но файл bin не запускается. Ошибка, которая отображается при попытке запустить исполняемый файл:
bash: ./shank-linux-120720110-1-bin: No such file or directory
Вы, вероятно, пытаетесь запустить 32-битный двоичный файл в 64-битной системе, в которой не установлена 32-битная поддержка.
Есть три случая, когда вы можете получить сообщение «Нет такого файла или каталога»:
file shank-linux-120720110-1-bin
отображает что-то вроде «ELF 32-bit LSB Execution…»), но когда вы пытаетесь его выполнить, вам говорят, что файл не существует. Сообщение об ошибке в последнем случае, по общему признанию, сбивает с толку. Это говорит вам о том, что ключевой компонент среды выполнения, необходимый для запуска программы, отсутствует. К сожалению, канал, по которому сообщается об ошибке, имеет место только для кода ошибки, а не для этой дополнительной информации, что действительно виновата среда выполнения. Если вам нужна техническая версия этого объяснения, прочтите Получение сообщения «Не найдено» при запуске 32-битного двоичного файла в 64-битной системе .
Команда file
будет рассказать вам, что это за двоичный файл. За некоторыми исключениями, вы можете запускать двоичный файл только для той архитектуры процессора, для которой предназначен ваш выпуск Ubuntu. Основным исключением является то, что вы можете запускать 32-битные (x86, также известные как IA32) двоичные файлы на 64-разрядных (amd64, также известных как x86_64) системах.
В Ubuntu до 11.04 для запуска 32-разрядных двоичных файлов на 64-разрядных системах bit, вам необходимо установить пакет ia32-libs
.Возможно, вам потребуется установить дополнительные библиотеки (если вы это сделаете, вы получите явное сообщение об ошибке).
Поскольку в 11.10 (oneiric) была введена поддержка multiarch , вы все еще можете установить ia32-libs
, но вы можете выбрать более тонкий подход, достаточно получить libc6-i386
(плюс любую другую необходимую библиотеку).
Biex tespandi fuq it-tweġiba @Gilles, hemm mill-inqas tliet xenarji li jirriżultaw f'dan l-iżball:
fajl
il-kmand jaħdem), li jwassal għal messaġġ ta 'żball li jista' jħawwad. Dan jista 'jfisser li hemm problema bil-loader. Kategoriji ta' problemi tal-loader:
Il-loader ta 'eżekutibbli ma jeżistix. Tista 'tiċċekkja dan billi tuża l-kmand tal-fajl u tara jekk il-loader jeżistix. Eż.
file lmgrd
lmgrd: ELF 64-bit LSB eżegwibbli, x86-64, verżjoni 1 (SYSV), marbut b'mod dinamiku, interpretu /lib64/ld-lsb-x86-64.so.3, għal GNU / Linux 2.6.18, imqaxxar
Avviż interpretu /lib64/ld-lsb-x86-64.so.3
; jekk dan il-fajl ma jeżistix, għandek bżonn tinstallah. Għal dan il-loader partikolari fis-16.04, ir-risposta kienet sudo apt-get install lsb
.
Kwistjonijiet bil-loader tal-iskript (ara din it-tweġiba ).
ldd
biex tivverifika jekk hemmx libreriji "mhux misjuba". Ara din it-tweġiba għal aktar informazzjoni. Il-loader li ma jeżistix jista 'jkun minħabba diskrepanza ta' 32/64 bit jew xi raġuni oħra. Jista 'jkun hemm tipi oħra ta' żbalji tal-loader li ma nafx dwarhom.
Следуйте этому ответу, только если в выводе файла имя-файла
отображается:
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
Установив deb для 32-битной версии, я понял, что мне не хватает некоторых библиотек (в дополнение к ia32-libs и libc6). Сначала я решил эту проблему, дав следующую команду:
sudo apt-get install -f
Затем я получил другую ошибку:
Message: SDL_GL_LoadLibrary
Error: Failed loading libGL.so.1
Очевидно, эти библиотеки были правильно установлены. Не вдаваясь в подробности, пришлось вручную связывать библиотеки. Тогда я понял, что с помощью Synaptic можно было бы проще установить следующие пакеты:
libgl1-mesa-glx:i386
libgl1-mesa-dri: i386.
После этого следующей проблемой был черный экран во время игры, который я решил, заменив исполняемый файл в / Shank / bin следующим: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar.bz2 .
Надеюсь, это будет кому-то полезно. Если вам нужна дополнительная помощь или подробности, свяжитесь со мной.
Эта ошибка возникает при работе в Windows (которая вводит дополнительные символы из-за другого разделителя строк, чем в системе Linux) и при попытке запустить этот сценарий (с добавленными дополнительными символами) в Linux. Сообщение об ошибке вводит в заблуждение.
В Windows разделителем строк является CRLF ( \ r \ n ), тогда как в Linux это LF ( \ n ). В моем случае это произошло из-за работы в Windows и загрузки на сервер Unix для выполнения.
Вот расшифровка, показывающая немного больше о природе проблемы, и как ее исправить, начиная с Ubuntu 16.04. Обратите внимание, что хотя file
сообщает "динамически связанный", ldd
сообщает "не динамический исполняемый файл".
$ ./myprogram
bash: myprogram: No such file or directory
$ file myprogram
myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
$ ldd myprogram
not a dynamic executable
Как только вы установите libc6:i386, все начинает улучшаться...
$ sudo apt-get install libc6:i386 # the initial fix
...
$ ldd myprogram
linux-gate.so.1 => (0xf77fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7626000)
/lib/ld-linux.so.2 (0x56578000)
$ ./myprogram
myprogram: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
Для завершения работы вам может понадобиться определить и установить дополнительные библиотеки по одной...
$ sudo apt-get install libstdc++6:i386 ## may require various additional libs
$ ./myprogram
... works correctly ...
Я не знаю, существует ли систематический способ определения правильных библиотек для установки. Есть небольшая догадка, сопоставляющая сообщения об ошибках с именами пакетов (tab completion help).
Google переместил меня на эту страницу. Моя проблема была отдаленно связана с названием этой ветки, поэтому я публикую ее здесь для будущих посетителей, таких как я:
Это одна из самых странных проблем:
$ ls -lh
ls: cannot access .~dataprep.ipynb: No such file or directory
-????????? ? ? ? ? ? .~dataprep.ipynb
-rw------- 1 tgowda mygroup 475K Jun 12 15:59 dataprep.ipynb
Я вижу, что файл . ~ Dataprep .ipynb
тут же с некоторыми странными разрешениями ??
.
Я просто хотел избавиться от этого испорченного файла.
Команда rm
не смогла удалить его. Команда mv
не смогла его переместить.
А потом ...
$ python
>>> from pathlib import Path
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('.~dataprep.ipynb'), PosixPath('dataprep.ipynb')]
>>> p = list(Path('.').glob("*.ipynb"))[0]
>>> p
PosixPath('.~dataprep.ipynb')
>>> p.unlink()
>>> list(Path('.').glob("*.ipynb"))
[PosixPath('dataprep.ipynb')]
И вот как я смог победить его.