当可执行文件不是[重复]时

当可执行文件不是[重复]时

可能的重复:
无法在 chroot 环境中执行某些二进制文件(zsh:未找到)

今天我遇到了一件让我很困惑的事情。一位同事正在使用他下载的特定预编译二进制文件(可用这里)。在他正在使用的 Ubuntu 10.04 LTS 服务器上,尝试执行此文件会导致文件未找到,即使权限设置正确也是如此。

然而,当我在 OpenSUSE 11.4 上尝试同样的事情时,它运行得很好。运行file它给我:

ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.15,已剥离

Ubuntu 和 OpenSUSE 机器都是 64 位安装,并且file在两台机器上返回相同的信息。

这对我来说看起来很好。在 opensuse 盒子上,LDD 甚至给了我一个简短的库文件列表。手工检查一下,所有这些指定的文件也存在于 Ubuntu 服务器上。但 Strace 输出有所不同:

打开使用:

execve("./trid", ["./trid"], [/* 122 vars */]) = 0

Ubuntu(给出完整路径不会改变结果):

execve("./trid", ["./trid"], [/* 19 vars */]) = -1 ENOENT (没有这样的文件或目录)

什么会导致这样的文件无法以这种方式执行?

答案1

类型

ldd ./trid

在 openSuse 和 Ubuntu 系统上都可以。

我怀疑您会发现后者缺少库文件。

相关内容