不能执行二进制文件

不能执行二进制文件

我有一个应用程序出现错误:

nhsupsserver: cannot execute binary file

我读过一些文本,其中大多数谈到架构不匹配和可执行文件。

引用错误的行是

do_start() {
  $NHSUPSSERVER -d
}

我尝试使用 32 位和 64 位可执行文件,但发生了同样的事情

cubietruck:/usr/local/nhs# file nhsupsserver64
nhsupsserver64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=0x90896f88ce3ae94d53190615abf4f2075ee1b18d, not stripped
cubietruck:/usr/local/nhs# file nhsupsserver32
nhsupsserver32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, BuildID[sha1]=0x5a63e079574fae633eb538a4400f5e6f6e224752, not stripped
cubietruck:/usr/local/nhs# uname -a
Linux cubietruck 3.4.61+ #1 SMP PREEMPT Tue Dec 17 19:28:39 CST 2013 armv7l armv7l armv7l GNU/Linux

到底是怎么回事?

答案1

uname -afile nhsupserver。您很可能正在运行 ARM 架构,但 nhsupserver 二进制文件适用于 x86。

更新现在您已经添加了这两个输出,很明显您的硬件是手臂v7l但 nhsupserver 二进制文件是为x86硬件。

您需要获取已针对您的armv7l 硬件编译的nhsupserver 版本。这可能涉及下载不同的包或从源代码编译它。或者放弃你的armv7l硬件并转向x86。

相关内容