我有一个二进制可执行文件,它是我下载过的学术软件包的一部分。我似乎无法让它运行,而且我无法访问源代码。我尝试过以下的事情。有什么想法吗?
非常感谢。
$ chmod +x random_cell
$ ./random_cell
-bash: ./random_cell: cannot execute binary file
$ file random_cell
random_cell: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped
$ ldd random_cell
random_cell: is not an object file
$ uname -m
x86_64
答案 0 :(得分:1)
我遇到了同样的问题,这就是我提出的答案
$ ~/opt/Linux-3.11.0-i686/svn/bin/svn --version
-bash: /home/fennellb/opt/Linux-3.11.0-i686/svn/bin/svn: cannot execute binary file
$ file ~/opt/Linux-3.11.0-i686/svn/bin/svn
/home/fennellb/opt/Linux-3.11.0-i686/svn/bin/svn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=0x6b38ac5ac15af4334712b9bacc6646cabaefde9a, not stripped
$ find /bin /usr/bin -maxdepth 1 -type f -print0 |
xargs -0 file |
awk 'BEGIN {c32=0;c64=0}
/ELF 64-bit/ {c64++}
/ELF 32-bit/ {c32++}
END {print "ELF 32-bit count "c32;
print "ELF 64-bit count "c64}'
ELF 32-bit count 1639
ELF 64-bit count 0
嗯......这解释了!
可能的解决方案:检查您的CPU是否支持64位Linux:
$ cat /proc/cpuinfo | egrep '^(model name|cpu MH|vend)'
cpu MHz : 1200.000
model name : Intel(R) Pentium(R) Dual CPU E2140 @ 1.60GHz
vendor_id : GenuineIntel
(然后是Google确切的CPU名称以查找其规格)
然后升级到64位Linux(如果可以的话) - Download Ubuntu Desktop
在32位Linux上运行64位代码的另一种方法是使用真正的cpu模拟器,如qemu / bochs - Bochs - OSDev Wiki - 使用64位Linux映像(如果你的CPU支持,则使用像xen这样的虚拟机它)。
另一种方法是要求您的软件提供商重新编译32位。
(对我来说,我将从源代码重新编译。)
答案 1 :(得分:0)
请注意file
命令的输出:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.4, not stripped
这就是说您尝试运行的可执行文件是针对 x86-64 体系结构编译的。如果您使用的是32位操作系统,除非您为32位重新编译它,否则它将无法运行。
由于您没有源代码,我想更简单的解决方案是使用64位Linux系统来运行它。