奇怪的可执行行为

我有一台服务器与Ubuntu 9.10的机器。 我试图把一个可执行文件,这是最新的Flashplayer(debugging版)。

不知何故文件显示为可用,但启动时,控制台指示文件不存在:

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复制)工作正常。

任何想法是怎么回事? 什么可以解释这种行为?

任何想法如何解决这个问题?

检查体系结构:如果没有安装兼容性库,则会在AMD64系统上得到运行x86二进制文件的消息。

另外Ubuntu 9.04不再更新,所以你可能想要更新它。

静态或dynamic的,它仍然使用dynamic加载的“解释器”,在Linux上通常被命名为ld-linux.so.VERSION 。 如果你有一个可执行文件需要一个不存在的解释器版本,就像当你试图在旧系统上使用一个更新的二进制文件一样,你将会得到这个错误,因为没有find解释器 。 (错误信息是不幸的,但不能解决,除非内核扩展了一个更好的错误报告API;所有的shell知道,它得到ENOENT响应execve("./flashplayerdebugger", ...) 。猜测是你正在尝试运行在旧服务器上为Ubuntu 11.x编译的二进制文件,这是一个失败的原因 – 你将需要为Ubuntu 9.10编译一个。

这可能是由于缺less32位环境。 您可以尝试使用strace来查找缺less的东西: strace ./flashplayerdebugger 。 你应该看到有一些open()用于不存在的库。