在Linux(Ubuntu)中,当我看到";没有这样的文件或目录;

在Linux(Ubuntu)中,当我看到";没有这样的文件或目录;,linux,bash,ubuntu,Linux,Bash,Ubuntu,在Ubuntu中,我发出以下命令并获得以下输出: soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$ ls -l SMILExtract -rwxr-xr-x 1 soujanya soujanya 3789876 Aug 20 2009 SMILExtract soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$ whoami soujanya soujanya@LLN-Ubuntu:~/workspace/o

在Ubuntu中,我发出以下命令并获得以下输出:

soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$ ls -l SMILExtract
-rwxr-xr-x 1 soujanya soujanya 3789876 Aug 20  2009 SMILExtract
soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$ whoami
soujanya
soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$ ./SMILExtract
bash: ./SMILExtract: No such file or directory
soujanya@LLN-Ubuntu:~/workspace/openEAR-0.1.0$
SMILExtract是一个可执行文件(不是shell脚本),我无权访问该文件的源代码。可能它调用了一些
system()
,也可能没有,我不知道

我听说,如果文件是32位的,并且我在64位系统上运行它,则可能会出现此错误,因此
没有此类文件或目录
引用加载程序,而不是此文件。我认为这不是我的原因,但无论如何,我的问题是:


有没有办法找出哪个文件是
没有这样的文件或目录
?可能是Bash中的一个特殊变量或类似的东西。

您可以使用
strace
运行程序,该工具显示程序使用哪些系统调用。它将产生大量输出,但您可以看到程序试图打开的文件。按如下方式运行程序:

strace ./SMILExtract

为了确定32/64位的问题,您可以“file./SMILExtract”

这个问题似乎离题了,因为它应该在askubuntu.com上。如果您通过strace(
strace./SMILExtract
)运行它,您应该会得到一些额外的信息。@AlexP:太好了,这似乎回答了这个问题!伟大的我已经把它变成了一个答案,所以它更明显一点。:)这也是一个很好的答案,但我只能选择一个。另一个答案包括更多的问题案例,而这个答案只检测到一个案例。我建议您将此信息作为注释添加到所选答案中,或者编辑其他答案以包含此信息。