利用 QEMU USER 模式執行 mips 程式
阿新 • • 發佈:2020-09-15
摘要
關鍵字: 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