利用 QEMU USER 模式运行 mips 程序

摘要

关键字: qemu mips

前述

QEMU是一个处理器模拟软件,可以用来在PC中模拟ARM、MIPS等多种架构的软硬件运行环境。QEMU主要有两种模拟模式:

  • System Mode
    System模式中,它可以虚拟多种CPU架构的虚拟计算机系统,比如可以在x86 的 Ubuntu系统中虚拟出一个MIPS架构的Debian系统。
  • User Mode
    User模式中,它可以运行为其他处理器编写的应用程序,比如可以在X64 Ubuntu系统中直接运行 MIPS Linux的应用程序。

QEMU功能强大,安装起来也很简单。在Ubuntu版本,只需要一条命令就可以把QEMU(本次博客涉及的安装文件)安装好.QEMU 其他架构的软件包这里没有涉及就没安装。

apt install qemu-user-static qemu-system-mips

注意这里我们安装的是qemu-user模式的static版本,也就是静态链接的qemu。

QEMU User模式的使用

安装好qemu后,我们可以用mips编译器交叉编译一个小得C demo应用程序并运行起来。在此之前我们需要安装一个能够编译mips应用程序的编译器。同样使用一条简单的命令就可以完成

apt install gcc-mips-linux-gnu 

编写一个小得C demo代码:

root@OptiPlex-7050:/home/lester# cat > xx.c << EOF
#include <stdio.h>
#include <endian.h>

int main()
{
    int x = 0x1234;
    printf("0x%x, htole32 0x%x, htobe32 0x%x\n", x, htole32(x), htobe32(x));
    return 0;
}
EOF

编译这段代码的命令如下:

root@OptiPlex-7050:/home/lester# mips-linux-gnu-gcc -static xx.c
root@OptiPlex-7050:/home/lester# file a.out 
a.out: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), statically linked, for GNU/Linux 3.2.0, BuildID[sha1]=58b4213f431eedcd37b362a38662113d6ff0b7dc, not stripped

从上可以看出,编出来的程序的MIPS的。(需要注意的是要加上 -static的编译选项否则运行时候会提示找不到链接库)

然后使用 qemu 运行:

root@OptiPlex-7050:/home/lester# qemu-mips-static ./a.out 
0x1234, htole32 0x34120000, htobe32 0x1234
posted @ 2020-09-15 18:00  sinpo828  阅读(2660)  评论(0编辑  收藏  举报