Bash:./filename:无法执行二进制文件


37

我无法在32位ubuntu 11.10中执行fortran编译代码。

错误消息是

bash: ./filename : Cannot execute binary file.

我也安装了gcc和gfortran库。

有人可以帮忙吗?

$ file um
um: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 

6
请输入file filename并报告结果。
1

文件名是um.exe,结果是bash:./um无法执行二进制文件
user87654'9

2
看起来不像本地Linux程序。尝试使用葡萄酒。
Lekensteyn 2012年

此可执行文件是使用make文件编译的,该文件编译了一组fortran代码。这个exe文件是在fedora机上制作的
user87654'9

1
请输入file um.exefile um(以二进制文件的名称为准)。但是,可能由于某种原因或其他Windows二进制文件生成了二进制文件。另外,如果该程序是公共程序,则可以将链接发布到源。或者只是在此处发布makefile。
1

Answers:


38

file um注释中发布的输出中可以看到,二进制文件是64位二进制文​​件。

32位系统无法运行64位二进制文​​件,只能以其他方式运行。


3
这是我见过的最常见原因,使用file可以很快地识别出此问题。
mikebabcock 2012年

那么有没有解决办法呢?
JohnMerlino 2014年

@JohnMerlino都可以为硬件提供正确的指令集,并为其提供支持的操作系统(AMD64硬件和AMD64程序的操作系统)。或对其进行仿真/仿真/虚拟化(Virtual Box / JVM / ...),或获取您的指令集的版本。您不能将其他指令集的软件作为本机程序运行。
12431234123412341234123

3

尝试使文件可执行

chmod +x um.exe

然后尝试运行它

./um.exe

但是,如果这是为Windows编译的exe文件,则可能需要安装Wine。


3

对于有此问题的人(除了有关不匹配位的部分)的另一种解决方案是在不使用命令“ bash”的情况下运行文件。

只需使用chmod +x 'path to the file'然后'the path to the file'在终端中运行。这就是我解决问题的方式。


0

此错误的另一个可能原因:尝试在Mac上运行Linux二进制可执行文件,反之亦然。

例如,尝试在true我的Mac OS X的Ubuntu盒子上运行二进制文件:

$ ./mactrue 
-bash: ./mactrue: cannot execute binary file: Exec format error

如果您下载了二进制文件并且执行失败并出现此错误,请检查是否为错误的操作系统下载了该版本。


0

对我来说,将二进制文件复制到Mac上的Applications中,然后复制到Path中,在Mac上将其弄乱了。我很确定Applications文件夹将二进制文件转换为Alias而不是实际的二进制文件。

-bash: /usr/local/bin/terraform: cannot execute binary file
mike$ file /usr/local/bin/terraform 
/usr/local/bin/terraform: MacOS Alias file

我再次从下载文件中解压缩了二进制文件,然后将其mv编辑到我的路径中,效果很好。

mike$ file /usr/local/bin/terraform
/usr/local/bin/terraform: Mach-O 64-bit executable x86_64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.