"); //-->
QEMU的英文单词是:QuickEmulator,它是一个小巧的模拟器。还有很多模拟器,比如VMWare、Virtual Box等。
但是VMWare、VirtualBox只能模拟x86、AMD64/Intel64等PC系统;而QEMU可以模拟更多硬件:ARM、MIPS、PPC、x86、AMD64/Intel64。
QEMU用途广泛,比如Xen、Android模拟器等都是基于QEMU的。
在嵌入式领域,很多人使用QEMU来深研Linux,比如研究文件系统、优化等等。
QEMU有两种模式:
用户模式(User Mode)
简单地说,一个使用arm-xxx-gcc编译出来的程序,是给ARM板子使用的,它无法在PC机上运行,只能放到ARM板子上去运行。
借助qemu,可以在PC机上运行ARM程序。比如:
$ gcc -o hello hello.c -static
$ ./hello // 这个hello程序是使用gcc给PC机编译的,可以直接运行
Hello, world!
$ arm-linux-gnueabihf-gcc -o hello hello.c -static // 它是给ARM板子编译的
$ ./hello // 所以无法在PC上运行
bash: ./hello: cannot execute binary file: Exec format error
$ ./qemu-arm ./hello // 我们可以用QEMU在PC上运行它
Hello, world!
在PC上使用qemu运行单个ARM程序时,这就是使用QEMU的用户模式。
它会把ARM指令翻译为PC的指令去运行。
注意,你可能无法做上述实验,因为:
a) 你没有安装ARM交叉编译工具链
b) 你没有安装QEMU
你根据下章《QEMU快速使用》安装QEMU后,就可以进行上述实验了。
系统模式(System Mode)
很多时候我们并不满足于在PC上运行单个ARM程序,我们想模拟出整个ARM单板:在这个模拟出来的虚拟ARM单板上,运行Linux系统,在其中运行各种APP。
这时候需要使用QEMU的系统模式。
现在才发现,在qemu 上运行rtt 是用户模式。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。