AC3D - нет такого файла или каталога

Я только что скачал AC3D и распаковал zip в папку в моей домашней папке. Я открыл терминал, записал CD в папку и набрал ./ac3d. Но я каждый раз получаю следующее сообщение об ошибке:

bash: ./ac3d: No such file or directory

Но файл явно там! Я уже сделал его работоспособным, чтобы этого не случилось. Любая помощь будет признательна!

Заранее спасибо!

Редактировать 1: @TheSchwa Я сделал. И это проявляется, так что да, это узнают.

@Nephente Вот, пожалуйста. Выход ls -l ac3d:

-rwxrwxrwx 1 ruben ruben 3758400 mei  1 23:34 ac3d

Выход head -1 ac3d (сокращенно)

ELF@�   4�T94(44�4�44�4���o27o27@7����|_h�7h0h088HH�H�  P�td\�4\(\(PPQ�td/lib/ld-linux.so.2GNU �[...]

Редактировать 2 :

Выход из dpkg --print-architecture: amd64

Вывод из dpkg --print-foreign-architectures: i386

3
задан 23 September 2015 в 20:49

1 ответ

Проблема, что двоичный файл является исполняемым файлом на 32 бита, и Вы запускаете Ubuntu на 64 бита. Это не проблема, начиная с поддержки предложений Ubuntu нескольких архитектуры.

Если в сомнении относительно природы исполняемого файла, или любом файле в целом, команде

file <filename>

предложения ценная информация. Если команда не доступна, она может быть установлена через

sudo apt-get install file

В этом случае это говорит нам среди другой информации

ac3d: ELF 32-bit LSB executable[...]
interpreter /lib/ld-linux.so.2

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

32-и исполняемые файлы на 64 бита нуждаются в различных интерпретаторах и различных версиях общих библиотек. К счастью, Ubuntu (или более точно Debian) представила очень сложную поддержку мультиархитектуры некоторое время назад [белоручка. необходимый]

Для проверки система пакета подготовлена к другой архитектуре, можно просмотреть системную архитектуру значения по умолчанию с

dpkg --print-architecture

На Ubuntu на 64 бита это примет значение по умолчанию к amd64.

dpkg --print-foreign-architectures

распечатывает всю другую архитектуру, о которой знает система пакета. Для поддержки на 32 бита вывод должен содержать i386. Если это не делает, можно добавить поддержку с

sudo dpkg --add-architecture i386

Необходимо обновить список пакета впоследствии

sudo apt-get update

Необходимые библиотеки или пакеты в их i386 разновидности могут теперь быть установлены с

sudo apt-get install <package>:i386

Строго говоря, устанавливать необходимый интерпретатор, установку GNU C Shared Library обозначается:

sudo apt-get install libc6:i386

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

./ac3d: error while loading shared libraries: libGLU.so.1: \
cannot open shared object file: No such file or directory

В этой точке нужно найти, какой пакет содержит этот недостающий файл. Если соответствующий пакет в собственной архитектуре уже установлен, можно искать vi adpkg

dpkg -S libGLU.so.1
libglu1-mesa:amd64: /usr/lib/x86_64-linux-gnu/libGLU.so.1

Таким образом, мы должны были бы установить libglu1-mesa:i386. Повторитесь, пока все зависимости не будут удовлетворены.

Но часто библиотека является абсолютно недостающей от системы. В этом случае можно или искать базу данных пакета Ubuntu онлайн или установить утилиту apt-file и сделайте

apt-file search <filename> 

Очень хорошее ПРАКТИЧЕСКОЕ РУКОВОДСТВО на мультисупинаторе на Debian (то же содержит для Ubuntu) может быть найдено здесь.

Дополнительный: пакет binutils содержит некоторые довольно изящные инструменты для исследования двоичных файлов. В особенности это содержит ldd (Перечислите Динамические Зависимости), util. Это перечисляет все динамические библиотеки, которые должен выполнить двоичный файл.

Пример:

ldd ac3d

производит

linux-gate.so.1 (0xf77b7000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf76ee000)
libGLU.so.1 => not found
libGL.so.1 => not found
libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xf76c0000)
libXmu.so.6 => not found
libXext.so.6 => not found
libX11.so.6 => not found
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf76ba000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf769e000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf75ac000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf7566000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7549000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf739e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7381000)
/lib/ld-linux.so.2 (0xf77ba000)

Таким образом, можно узнать быстро, какие библиотеки отсутствуют в системе.

3
ответ дан 24 September 2015 в 06:49
  • 1
    Теперь я получаю эту ошибку, я был попыткой несколько времен, но никакой результат: ( – abdul khalak 13 December 2016 в 14:04

Другие вопросы по тегам:

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