利用 QEMU USER 模式運行 mips 程式
摘要
關鍵字: qemu mips
前述
QEMU是一個處理器模擬軟體,可以用來在PC中模擬ARM、MIPS等多種架構的軟硬體運行環境。QEMU主要有兩種模擬模式:
- User Mode
System模式中,它可以在一個主機環境中虛擬不同的虛擬電腦系統,比如可以在Ubuntu系統中虛擬出一個MIPS架構的Debian系統。 - System Mode
User模式中,它可以運行一個為其他處理器編寫的應用程式,比如可以在X64-Ubuntu系統中直接運行一個MIPS-Linux的應用程式。
QEMU功能強大,現在的版本安裝起來也很簡單。但在Ubuntu版本中,只需要一條命令就可以把QEMU的User模式和System模式的可執行文件安裝好
apt install qemu-user-static qemu-system-mips
注意這裡我們安裝的是qemu-user模式的static版本,也就是靜態鏈接的qemu。
QEMU User模式的使用
安裝好qemu命令後,我們可以編譯一個我們自己編寫的mips-linux應用程式並運行起來。在此之前我們需要安裝一個能夠編譯mips應用程式的編譯器,同樣的,使用一條簡單的命令就可以完成
apt install gcc-mips-linux-gnu
安裝好編譯器以後,我們使用一段helloworld C程式碼測試一下:
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的。
然後使用qemu命令運行測試:
root@OptiPlex-7050:/home/lester# qemu-mips-static ./a.out
0x1234, htole32 0x34120000, htobe32 0x1234

