我有一个应用程序出现错误:
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 -a
也file nhsupserver
。您很可能正在运行 ARM 架构,但 nhsupserver 二进制文件适用于 x86。
更新现在您已经添加了这两个输出,很明显您的硬件是手臂v7l但 nhsupserver 二进制文件是为x86硬件。
您需要获取已针对您的armv7l 硬件编译的nhsupserver 版本。这可能涉及下载不同的包或从源代码编译它。或者放弃你的armv7l硬件并转向x86。