无法执行刚编译的二进制文件

无法执行刚编译的二进制文件

再次,典型的问题是:“无法运行可执行文件”。

我安装了 Virtual Box ver: 4.2.16 以及 Ubuntu。

我使用命令编译了几个 fotran 代码(也许应该注意到,我当时要求安装 gfortran,所以我安装了一下):

gfortran -o iri iritest.for irisub.for irifun.for iritec.for iridreg.for igrf.for cira.for iriflip.for

我收到了一些警告,但没有错误。然后我写下. iri并得到了:

 bash: . : iri: cannot execute binary file

我在本页上读到了很多关于此问题的 A/Q:以下是有用的信息:

uname -a

Linux pavel-VirtualBox 3.5.0-43-genereic #66~precise1-Ubuntu SMP Thu Oct 24 14:55:08 UTC 2013 i686 i686 i 386 GNU/Linux

文件 iri

iri: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (used shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xac4e2cda297fb7fc0dbea9bff7c88dfdb417c297, not stripped

文件 /bin/bash

/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (used shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x64552078250a29637d1678751065aa4b5ee35222, not stripped

我也尝试过chmod +x iri,得到了同样的结果。不过我认为这是不必要的,因为之前 ls -l 的输出是:

-rwxrwxr-x 1 pavel pavel 1170853 Nov 10 13:30 iri

我还将该文件发送到 Windows,当然,它不知道如何处理它。由于文件和操作系统规格相同,我不知道为什么 Ubuntu 拒绝执行该文件。您有什么想法吗?

答案1

要执行当前目录中的二进制文件(但不在可执行路径上),正确的语法是

./iri

(请注意/)。您给出的命令(.和文件名之间有一个空格)尝试来源该文件作为当前 shell 中的脚本 - 参见help source

$ . hello
bash: .: hello: cannot execute binary file
$ 
$ ./hello
Hello world!
$ 

相关内容