Назад | Перейти на главную страницу

Странное поведение исполняемого файла

У меня есть сервер с Ubuntu 9.10. Я пытаюсь установить исполняемый файл, который оказывается последней версией flashplayer (версия отладчика).

Каким-то образом файл отображается как существующий и исполняемый, но при его запуске консоль указывает, что файлы не существуют:

rodrigo@ns360773:~/t_fplayer$ pwd
/home/rodrigo/t_fplayer
rodrigo@ns360773:~/t_fplayer$ ls -lh
total 12M
-rwxr-xr-x 1 rodrigo rodrigo 12M 2011-07-09 11:35 flashplayerdebugger
rodrigo@ns360773:~/t_fplayer$ ./flashplayerdebugger
-bash: ./flashplayerdebugger: No such file or directory
rodrigo@ns360773:~/t_fplayer$ ldd flashplayerdebugger
       not a dynamic executable

использование того же исполняемого файла (скопированного через ssh) на моем локальном компьютере работает нормально.

Есть идеи о том, что происходит? Чем можно объяснить такое поведение?

Есть идеи, как это исправить?

Проверьте архитектуру: вы получите это сообщение, запускающее двоичный файл x86 в системе AMD64, если у вас не установлены библиотеки совместимости.

Кроме того, Ubuntu 9.04 больше не обновляется, поэтому вы можете обновить его.

Статический или динамический, он по-прежнему использует динамически загружаемый «интерпретатор», который в Linux обычно называется ld-linux.so.VERSION. Если у вас есть исполняемый файл, для которого требуется версия интерпретатора, которой нет, например, когда вы пытаетесь использовать более новый двоичный файл в старой системе, вы получите эту ошибку, потому что переводчик не найдено. (И сообщение об ошибке прискорбно, но не может быть исправлено, если ядро ​​не будет расширено с помощью улучшенного API отчетов об ошибках; все, что знает оболочка, это то, что она получила ENOENT в ответ на execve("./flashplayerdebugger", ...).) Итак, я предполагаю, что вы пытаетесь запустить двоичный файл, скомпилированный для Ubuntu 11.x, на своем старом сервере, и это безнадежное дело - вам нужно будет получить один, скомпилированный для Ubuntu 9.10.

Вероятно, это связано с отсутствием 32-битной среды. Вы можете попробовать использовать strace, чтобы найти то, что точно отсутствует: strace ./flashplayerdebugger. Вы должны увидеть там несколько open () для несуществующих библиотек.