qemu 编译

本文介绍在Ubuntu 11.04中编译QEMU-KVM的过程,包括解决依赖问题、配置选项说明及编译目标选择。特别关注了zlib和libpci的安装,以及如何正确配置目标架构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ubuntu1104中,使用 sudo apt-get source qemu 下载到 qemu-kvm-0.14.0+noroms
然后sudo  ./configure 报告错误
===
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
===
这需要安装zlib
用如下的命令
sudo apt-get install zlib1g-dev
安装好后,再运行configure,就会有下面的这堆配置。
===
ldm@ldm-TOP2:/usr/src/qemu-kvm-0.14.0+noroms$ sudo ./configure

Error: libpci header check failed
Disable KVM Device Assignment capability.

Install prefix    /usr/local
BIOS directory    /usr/local/share/qemu
binary directory  /usr/local/bin
config directory  /usr/local/etc
Manual directory  /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /usr/src/qemu-kvm-0.14.0+noroms
C compiler        gcc
Host C compiler   gcc
CFLAGS            -O2 -g 
QEMU_CFLAGS       -m32 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing  -fstack-protector-all -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits
LDFLAGS           -Wl,--warn-common -m32 -g 
make              make
install           install
host CPU          i386
host big endian   no
target list       x86_64-softmmu
tcg debug enabled no
Mon debug enabled no
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
-Werror enabled   no
SDL support       no
curses support    yes
curl support      no
check support     no
mingw32 support   no
Audio drivers     oss
Extra audio cards ac97 es1370 sb16 hda
Block whitelist   
Mixer emulation   no
VNC TLS support   no
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
VNC thread        no
xen support       no
CPU emulation     yes
brlapi support    no
bluez  support    no
Documentation     no
NPTL support      yes
GUEST_BASE        yes
PIE user targets  no
vde support       no
IO thread         no
Linux AIO support no
ATTR/XATTR support no
Install blobs     yes
KVM support       yes
KVM PIT support   yes
KVM device assig. no
fdt support       no
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
uuid support      no
vhost-net support yes
Trace backend     nop
Trace output file trace-<pid>
spice support     no
rbd support       no
xfsctl support    no
ldm@ldm-TOP2:/usr/src/qemu-kvm-0.14.0+noroms$
===
然后make,成功,编译出了x86_64-softmmu/qemu-system-x86_64

如果想编qemu-system-arm,可以用如下命令
sudo ./configure --target-list=arm_softmmu
make
Error: libpci header check failed
sudo apt-cache search libpci
sudo apt-get install libpci-dev
正确的命令应该是
sudo ./configure --target-list=arm-softmmu
查看target-list的配置可以打开qemu源根目录下的configure文件,搜索target-list 关键字。
会在arm-softmmu目录下生成qemu-system-arm文件。

安装未执行。另外,./configure --prefix=目录,可以指定安装目录。
从配置时的输出消息中可以看到,安装目录默认为/usr/local

### QEMU 编译与运行教程 #### 一、QEMU简介 QEMU是一款功能强大的开源模拟器,能够模拟多种CPU架构,包括ARM、MIPS、x86、PowerPC等主流和特定处理器。它还支持丰富的外围设备模拟,如UART、SD卡、USB等,为操作系统的开发和测试提供了坚实的技术支持[^3]。 --- #### 二、下载QEMU源码 要编译QEMU,首先需要获取其源代码。可以通过官方Git仓库克隆最新版本的源码包: ```bash git clone https://github.com/qemu/qemu.git cd qemu ``` 如果需要特定版本,则可以从GitHub发布页面下载对应标签的压缩包。 --- #### 三、安装依赖项 在编译之前,需确保系统已安装所需的构建工具和库。以下是常见Linux发行版上的依赖列表: 对于Debian/Ubuntu系列: ```bash sudo apt update && sudo apt install -y build-essential git libglib2.0-dev \ pkg-config zlib1g-dev libpixman-1-dev ``` 对于Fedora/CentOS/RHEL系列: ```bash sudo dnf groupinstall "C Development Tools and Libraries" sudo dnf install glib2-devel pixman-devel zlib-devel ``` 这些依赖项是成功编译QEMU的基础。 --- #### 四、配置与编译QEMU 进入QEMU源码目录后,执行以下命令完成配置和编译过程: ```bash ./configure --target-list=arm-linux-user,aarch64-linux-user,x86_64-softmmu,i386-softmmu make -j$(nproc) ``` 上述`--target-list`选项指定了目标架构的支持范围,可以根据实际需求调整。例如,仅针对ARM架构可设置为`arm-softmmu`。 完成后,可以在`qemu/build`目录下找到生成的二进制文件。 --- #### 五、运行自定义镜像 假设已经准备好了几个文件:`mysbi.bin`、`benos.bin`、`benos.elf`,它们分别代表SBI固件、内核映像以及ELF格式的应用程序。可以按照以下方式启动QEMU实例: ```bash ./build/aarch64-softmmu/qemu-system-aarch64 \ -machine virt \ -cpu cortex-a57 \ -smp 4 \ -m 2G \ -kernel benos.bin \ -initrd mysbi.bin \ -append "root=/dev/vda console=ttyAMA0" \ -nographic ``` 此命令设置了虚拟机的基本参数,包括机器类型(`virt`)、CPU型号(`cortex-a57`)、核心数(-smp)、内存大小(-m),并通过指定内核和初始化RAM盘来引导系统[^1]。 --- #### 六、Android x86环境下的QEMU运行 当涉及Android x86仿真时,通常会借助脚本来简化流程。例如,`qemu-run.sh`是一个典型的启动脚本,负责检查必要依赖项、配置运行参数并最终调用QEMU启动虚拟机[^2]。 一个简单的示例可能如下所示: ```bash #!/bin/bash # 定义路径变量 KERNEL_PATH="path/to/kernel.img" DISK_IMAGE="path/to/android-x86.qcow2" # 启动QEMU qemu-system-x86_64 \ -enable-kvm \ -m 4G \ -smp 4 \ -hda $DISK_IMAGE \ -kernel $KERNEL_PATH \ -append "root=/dev/sda androidboot.hardware=qemu" \ -net nic,model=virtio-net-pci \ -net user,hostfwd=tcp::5555-:5555 \ -display sdl,gl=on ``` 该脚本实现了基本的网络转发、图形界面渲染等功能。 --- #### 七、注意事项 1. 如果遇到错误提示缺少某些头文件或动态链接库,请返回第三步确认所有必需组件均已正确安装。 2. 对于初学者而言,在终端中打开项目根目录是一种便捷的操作方法[^5]。 3. 高级用户可根据具体应用场景修改`configure`阶段的目标列表或者启用额外插件支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值