gpt4 book ai didi

c - Qemu-Arm 文件访问?

转载 作者:行者123 更新时间:2023-11-30 15:25:32 30 4
gpt4 key购买 nike

我正在尝试为项目设置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 的经验不是很丰富,但鉴于我之前使用虚拟机的经验,我会猜测这是就这样吧。

谁能帮忙解决这个问题吗?

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

最佳答案

虽然您通过修复拼写错误找到了问题的解决方案,但我想我会解决您提出的这个问题:

Seems like it can't find the file, I believe this to be because QEMU doesn't have access to it... I am not very experienced with QEMU but given my prior experience with virtual machines I would guess this to be the case.

QEMU 有两种操作模式。一种是作为全系统模拟器,与您可能熟悉的其他虚拟机类似。

另一种模式是作为用户模式模拟器,这就是您正在使用的模式。在此模式下,QEMU 将用户模式指令从一种 ISA 转换为另一种 ISA。在您的情况下,它将 ARM 指令转换为 x86 指令。然而,当处理系统调用时,模拟器直接在主机操作系统中执行它们。这就是为什么 QEMU 能够像您运行的任何其他进程一样访问本地文件系统。

关于c - Qemu-Arm 文件访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831142/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com