Qemu-Arm文件访问?

时间:2015-01-08 00:33:51

标签: c qemu

我正在尝试为项目设置arm调试环境。该项目所需的主要代码功能之一是将二进制文件加载到内存中(6mb)。

我在ubuntu linux 12.04上安装了qemu-arm,编译了GDB,目标设置为arm。我正在尝试编译以下测试代码:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <stdint.h>
int main()
{
int fd = open("files/test.txt", O_RDONLY);
printf("File handle: %i ", fd);
perror(NULL);
return 0
}

命令行:

arm-linux-gnueabihf-gcc -static -no-stack-protector -g test.c -o test;qemu-arm  ./test

输出:

File handle: -1 No such file or directory

好像它找不到文件,我相信这是因为QEMU无法访问它...我对QEMU不是很有经验但是考虑到我以前使用虚拟机的经验我会猜到这个是这样的。

任何人都可以帮忙解决这个问题吗?

编辑: 哇,我解决了,似乎我的代码中有一个拼写错误,文件路径不正确。现在修好了...我应该关闭吗?我的问题无效,因为这是一个愚蠢的错字。我发布的代码中没有错字。

1 个答案:

答案 0 :(得分:1)

虽然您通过修正拼写错误找到了问题的解决方案但我认为我会解决您提出的问题:

  

似乎无法找到该文件,我相信这是因为QEMU   无法访问它...我对QEMU不是很有经验但是   根据我之前的虚拟机经验,我猜这个   是这样的。

QEMU有两种操作模式。一个是全系统仿真器,类似于您可能熟悉的其他VM。

另一种模式是用户模式模拟器,这就是您正在使用的模式。在此模式下,QEMU将用户模式指令从一个ISA转换为另一个ISA。在您的情况下,它将ARM指令转换为x86指令。但是,在处理系统调用时,仿真器直接在主机OS中执行它们。所以这就是QEMU能够像你运行的任何其他进程一样访问本地文件系统的原因。