Почему bash не может найти файл?

Я обновляю свою виртуальную машину с Ubuntu 10 до Ubuntu 18. После обновления я не могу открыть исполняемые файлы. Что я делаю не так?

server@vm-server:~$ cd login/
server@vm-server:~/login$ ls -l
total 30520
drwxrwxr-x 2 server server     4096 Apr 19 14:12 anti
-rwxrwxr-x 1 server server  9321752 Apr 19 14:12 guard
-rwxrwxr-x 1 server server      250 Apr 19 14:12 guard_user.ini
-rwxrwxr-x 1 server server      251 Apr 19 14:12 guard_user.ini~
drwxrwxr-x 2 server server     4096 Apr 19 14:12 log
-rwxrwxr-x 1 server server      365 Apr 19 14:12 login_engine.ini
-rwxrwxr-x 1 server server 21861975 Apr 19 14:12 login_server
-rwxrwxr-x 1 server server    16722 Apr 19 14:12 login_server.bcfg
-rwxrwxr-x 1 server server      665 Apr 19 14:12 login_user.ini
-rwxrwxr-x 1 server server      660 Apr 19 14:12 login_user.ini~
-rwxrwxr-x 1 server server       94 Apr 19 14:12 run_new.sh
-rwxrwxr-x 1 server server      161 Apr 19 14:12 run.sh
-rwxrwxr-x 1 server server      113 Apr 19 14:12 run.sh~
server@vm-server:~/login$ ./login_server
-bash: ./login_server: No such file or directory
server@vm-server:~/login$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
server@vm-server:~/login$

дополнительная информация: я обновляю, копируя свои файлы на свою реальную машину, стираю все на виртуальной машине, устанавливаю сервер Ubuntu 18.04 и копирую свои файлы обратно.

server@vm-server:~/login$ uname -m
x86_64
server@vm-server:~/login$ file ./login_server
./login_server: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-, for GNU/Linux 2.2.5, with debug_info, not stripped
server@vm-server:~/login$ ldd ./login_server
        not a dynamic executable
0
задан 19 April 2019 в 18:39

1 ответ

Похоже, на этот раз вы установили 64-битный рабочий стол, а ваши старые исполняемые файлы 32-битные. Вам нужно установить 32-битные библиотеки, начните с libc6-i386, затем у вас будет ldd, который перечислит другие необходимые 32-битные библиотеки вместо того, чтобы ошибочно утверждать, что «не динамический исполняемый файл».

Ubuntu поставляется с достаточным количеством утилит ELF, чтобы позволить ldd-скрипту выдавать приемлемый вывод, когда отсутствует специфический загрузчик архитектуры. Ошибка 1616609 решает его проблему, присоединитесь к ней, и, возможно, она когда-нибудь будет исправлена.

0
ответ дан 19 April 2019 в 18:39

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

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