再次,典型的问题是:“无法运行可执行文件”。
我安装了 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!
$