摘要
關鍵字: 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