如何获取QEMU的配置选项?实现同特性构建复刻
像vim、gdb这类工具可以通过--version或--configuration输出自身构建配置,方便在其他环境复刻相同特性的版本。QEMU也有几种方式获取同类信息,以下是具体方法:
1. 用--version查看基础配置与版本
运行对应架构的QEMU二进制文件(比如x86_64架构的qemu-system-x86_64)并加上--version参数,会输出版本号、版权信息,以及核心特性的支持情况:
qemu-system-x86_64 --version
输出示例:
QEMU emulator version 7.2.0 (Debian 1:7.2+dfsg-7+deb12u2)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
Features supported:
+kvm +virtfs +usb-host +usb-guest +qcow2 +vnc +sdl ...
这些标记直接反映编译时是否启用了对应特性。
2. 通过-help间接查看支持的特性
运行qemu-system-<arch> -help,输出内容会包含当前QEMU支持的所有命令行选项、设备类型、磁盘格式等,从这些内容可以推断出编译时启用的配置。比如如果输出里有-enable-kvm选项,说明编译时启用了KVM支持;如果列出了qcow2、raw等磁盘格式,说明对应的存储特性已启用。
3. 查看编译生成的config-host.h(自行编译场景)
如果你是从源码编译的QEMU,编译完成后在源码目录下会生成config-host.h文件,里面用宏定义的形式记录了所有编译选项:
#define CONFIG_KVM 1 #define CONFIG_QCOW2 1 #define CONFIG_USB 1 #define CONFIG_VIRTIO_NET 1 #define CONFIG_VNC 1
其中值为1表示该特性已启用,0或未定义则表示未启用,这是最直接的配置信息来源。
4. 查看发行版包的构建参数(预编译场景)
如果使用的是发行版打包好的QEMU(比如Debian、Ubuntu、CentOS等),可以通过包管理工具查看构建信息:
- Debian/Ubuntu系统:运行
apt show qemu-system-x86_64,在输出的Build-Depends和Description部分能看到相关依赖与特性;也可以通过apt source qemu-system-x86_64获取源码包,查看debian/rules文件,里面有完整的configure命令参数。 - RHEL/CentOS系统:运行
dnf info qemu-kvm,或者查看包的源码rpm中的spec文件,里面记录了编译时的配置参数。
内容的提问来源于stack exchange,提问作者永劫回帰

