从源码编译Qemu的流程及简述

要理解甚至修改Qemu,肯定要会编译它,不能老是apt-get,所以做个流程记录,并带上简单的解释。

1. 下载源码

http://wiki.qemu.org/Download 从这里下就可以了

2. 解压

比如我下载的是qemu-2.8.0.tar.bz2

# 解压
tar -xvf qemu-2.8.0.tar.bz2
# 进入源码目录
cd qemu-2.8.0

3. 配置

# 配置
./configure [--enable_debug --prefix=/PATH/TO/INSTALL --target-list=x86_64-softmmu]


configure文件中有很多可选的配置,可以通过./configure --help查看详细配置帮助。

还有一点,编译Qemu需要一些依赖库,我不喜欢遇到错误之前就按其他教程说的一样安装一堆包,万一用不到呢。。。所以,如果configure提示错误根据提示去apt或者yum相应的包就可以了,再不行就根据错误提示去网上搜索,然后直到configure成功。

这里简单解释下上边中括号中的可选配置的含义:

--enable_debug: 打开后可以用gdb debug了

--prefix=[path]: 指定二进制程序的安装目录

--target-list=[target]: 编译指定的模拟器,可选的列表在./configure --help中有写,注意这里”xxx-soft”和”xxx-linux-user”分别指系统模拟器和应用程序模拟器, 分别生成的二进制文件名字为”qemu-system-xxx”和”qemu-xxx”

4. 编译

make

5. 安装

make install

6. 其他的一些编译参数

Native AIO(libaio)

配置支持’aio=native’ 需要加上以下参数,这样QEMU就可以用libaio而不是posix异步io了。

# 得有libaio的开发库
yum install libaio-devel
# QEMU confifure时加入以下参数
--enable-linux-aio #开启linux native aio(libaio)

OpenGL

配置opengl硬件加速[1]:

Step 1. yum安装必要的库

yum install SDL2-devel pulseaudio-libs-devel libepoxy-devel

Step 2. 编译virglrenderer

到https://rpms.remirepo.net/rpmphp/zoom.php?rpm=virglrenderer下载源码并编译

cd SRC_PATH
./autogen.sh
./configure
make
make install

Step 3. QEMU confifure时加入以下参数

--enable-sdl
--with-sdlabi=2.0
--enable-opengl
--enable-virglrenderer
--enable-system
--enable-modules
--audio-drv-list=pa

这时,QEMU的配置输出有了以下变化:

module support    no --> yes
SDL support       no --> yes (2.0.3)
virgl support     no --> yes
Audio drivers     oss --> pa
OpenGL support    no --> yes
OpenGL dmabufs    no --> yes

参考:

[1] QEMU with hardware graphics acceleration, https://at.projects.genivi.org/wiki/display/GDP/QEMU+with+hardware+graphics+acceleration

Leave a Reply

Your email address will not be published. Required fields are marked *