尝试使用qemu运行ARM可执行文件时权限被拒绝

时间:2017-07-17 15:32:18

标签: arm filesystems virtualbox cross-compiling mount

我正在尝试使用qemu运行交叉编译的文件,但是获得“Permission denied”/“Operation not allowed”错误(即使在使用sudo运行时)。

我在VirtualBox 5.0.22中运行Debian 8.7 i386,交叉编译到ARM。交叉编译设置在http://exploringbeaglebone.com/chapter7更详细地描述。

交叉编译文件在复制到本机ARM设备时运行正常。

#include <stdio.h>
int main()
{
  printf("Hello ARM\n";
  return 0
}

构建它:

# arm-linux-gnueabihf-gcc testARM.c -o testARM -Wall
# file testARM
# testARM: ELF 32-bit LSB executable, ARM, EABI5 version1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=...., not stripped

尝试直接运行

# ./testARM
# bash: ./testARM: Permission denied

尝试通过qemu

运行
# qemu-arm ./testARM
# ./testARM: Operation not permitted

与sudo相同

# sudo qemu-arm ./testARM
# ./testARM: Operation not permitted

在平台上运行它,它是交叉编译的作品

beaglebone:~$ ./testARM
Hello ARM

当然,我还检查了文件权限(rwxr-xr-x) 谷歌搜索向我展示了同样问题的其他人,但没有解决方案。

我最好的猜测是,从VirtualBox中运行qemu导致了这个问题,但有多个报告它只是起作用。主机CPU是Intel Core i7。

可能是什么问题?我想在构建过程中运行自动化测试,这就是为什么使用qemu的工作设置会很好。

1 个答案:

答案 0 :(得分:1)

正如@TobySpeight所假定的,这只是文件系统安装标志的问题。在stackexchange here上有描述。

使用exec标志进行挂载解决了以下问题:mount -o remount,exec filesystem