Bash 尝试执行确实存在的二进制文件,返回 ENOENT

Bash 尝试执行确实存在的二进制文件,返回 ENOENT

我有一个 Rust 构建脚本,需要为我参与的项目运行。Cargo 尝试在主构建过程之前执行该脚本,但失败了,因此我尝试运行它:

$ ./build-script-build
bash: ./build-script-build: No such file or directory

但该文件显然存在:

$ file build-script-build
build-script-build: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped

我有权限:

$ stat -c %A build-script-build
-rwxr-xr-x

strace显示以下内容:

$ strace ./build-script-build
execve("./build-script-build", ["./build-script-build"], [/* 23 vars */]) = -1 ENOENT (No such file or directory)
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
write(2, "strace: exec: No such file or di"..., 40) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

我知道这个问题可能会在 64 位系统上运行 32 位可执行文件时出现,但file显示它是 64 位。我遗漏了什么?

Linux 4.8.13-1-ARCH x86_64顺便说一下,这是。

相关内容