Я обновляю свою виртуальную машину с 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
Похоже, на этот раз вы установили 64-битный рабочий стол, а ваши старые исполняемые файлы 32-битные. Вам нужно установить 32-битные библиотеки, начните с libc6-i386, затем у вас будет ldd, который перечислит другие необходимые 32-битные библиотеки вместо того, чтобы ошибочно утверждать, что «не динамический исполняемый файл».
Ubuntu поставляется с достаточным количеством утилит ELF, чтобы позволить ldd-скрипту выдавать приемлемый вывод, когда отсутствует специфический загрузчик архитектуры. Ошибка 1616609 решает его проблему, присоединитесь к ней, и, возможно, она когда-нибудь будет исправлена.