我正在尝试使用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的工作设置会很好。
答案 0 :(得分:1)
正如@TobySpeight所假定的,这只是文件系统安装标志的问题。在stackexchange here上有描述。
使用exec标志进行挂载解决了以下问题:mount -o remount,exec filesystem