Linux 下面执行可执行文件却报 file not found 错误

在一个 64-bit Arm 开发板上执行一个 32-bit 的程序,bash 却报 file not found error, 可是 ls 是可以看到这个文件存在。

file not found error 通常会有以下三种原因

  • 文件确实不存在
  • 该文件是一个悬挂的 symbolic link
  • 这是个 32-bit 的 object(file ${FILE} 查看该文件类型), 但是 host 是 64-bit, 缺少 32-bit 的支持。

这次的错误就是第三个原因,运行该程序所依赖的运行时环境缺少关键组件,但是由于内核的接口只能返回一个错误码,并不能提供额外的信息。

可以查看 stackexchange 得到更多信息。