时间轴
时间轴
2025-11-21
- init
本文介绍了Qemu的编译过程,包括编译环境准备、aarch64架构的编译方法、可选开启O0和-g3调试信息、编译glib和qemu的步骤,以及编译时自动生成compile_commands.json的操作,最后说明了利用QEMU源码目录下的.gdbinit进行gdb调试的方法。
环境

编译
编译 aarch64
可选:开启 O0,-g3 调试信息
1234567891011 | wget https://download.qemu.org/qemu-10.2.0.tar.xzsudo add-apt-repository ppa:deadsnakes/ppasudo apt-get updatesudo apt-get install python3.9 python3-pip ninja-buildpython3.9 -m pip install --user tomli sphinx sphinx_rtd_theme# 设置环境变量~/.bashrc或~/.zshrcexport PATH="$HOME/.local/bin:$PATH"# 通过 apt 安装的 glib 版本太旧,而 qemu-10.2.0 需要 2.66.0 以上sudo apt-get install libglib2.0-dev pkg-config |
编译 glib
123456789101112 | python3.9 -m pip install --user meson ninjameson setup _build \ --prefix="$(pwd)/_install" \ --libdir=lib \ --buildtype=release \ -Ddefault_library=shared# 编译ninja -C _build# 安装ninja -C _build install |
编译qemu
123456789101112131415161718192021222324252627 | # 临时设置环境变量export PKG_CONFIG_PATH="$HOME/tools/glib-2.72.4/_install/lib/pkgconfig:$PKG_CONFIG_PATH"# 使用rpath编译时嵌入库路径export LD_LIBRARY_PATH="$HOME/tools/glib-2.72.4/_install/lib:$LD_LIBRARY_PATH"./configure \ --target-list=aarch64-softmmu \ --prefix=$(pwd)/_install \ --python=/usr/bin/python3.9 \ --extra-ldflags="-Wl,-rpath,$HOME/tools/glib-2.72.4/_install/lib"# optional:开启 O0,-g3 调试信息./configure \ --target-list=aarch64-softmmu \ --prefix=$(pwd)/_install \ --python=/usr/bin/python3.9 \ --extra-ldflags="-Wl,-rpath,$HOME/tools/glib-2.72.4/_install/lib" \ --extra-cflags="-O0 -g3"make -j$(nproc)make install# 编译完成后确认,应该会输出:RUNPATH /home/zhaohang/tools/glib-2.72.4/_install/libobjdump -p _install/bin/qemu-system-aarch64 | grep RUNPATH# 推荐设置环境变量~/.bashrc或~/.zshrcexport PATH="$HOME/tools/qemu-10.2.0/bin:$PATH" |
compile_commands.json
编译会自动生成compile_commands.json
1 | cp build/compile_commands.json . |
gdb 调试
QEMU 源码目录下有一个 .gdbinit,在此目录下执行 gdb 会自动执行 scripts/qemu-gdb.py 这个脚本,具体 debug 方法参考:
gdb使用,参考:

