为什么 bash 找不到该文件?

为什么 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

答案1

看起来你这次安装的是 64 位桌面,而你的旧可执行文件是 32 位的。你需要安装 32 位库,从 libc6-i386 开始,然后你将得到一个 ldd,它将列出其他所需的 32 位库,而不是错误地声明“不是动态可执行文件”。

Ubuntu 确实带有足够的 ELF 实用程序,以允许 ldd 脚本在不存在特定架构加载器时产生合理的输出。错误 1616609解决他的问题,加入它,也许有一天它会被修复。

相关内容