时间轴

2025-11-21

  1. init

环境

os

编译

编译 aarch64
可选:开启O0,-g3调试信息

1
2
3
4
5
6
7
8
9
10
11
wget https://download.qemu.org/qemu-10.2.0.tar.xz

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

sudo apt-get install python3.9 python3-pip ninja-build
python3.9 -m pip install --user tomli sphinx sphinx_rtd_theme
# 设置环境变量~/.bashrc或~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
# 通过apt安装的版本太旧,而qemu-10.2.0需要2.66.0以上
sudo apt-get install libglib2.0-dev pkg-config

编译glib

1
2
3
4
5
6
7
8
9
10
11
12
python3.9 -m pip install --user meson ninja
meson setup _build \
--prefix="$(pwd)/_install" \
--libdir=lib \
--buildtype=release \
-Ddefault_library=shared

# 编译
ninja -C _build

# 安装
ninja -C _build install

编译qemu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 临时设置环境变量
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 \
--extra-cflags="-O0 -g3" \
--prefix=$(pwd)/_install \
--python=/usr/bin/python3.9 \
--extra-ldflags="-Wl,-rpath,$HOME/tools/glib-2.72.4/_install/lib"

make -j$(nproc)
make install

# 编译完成后确认,应该会输出:RUNPATH /home/zhaohang/tools/glib-2.72.4/_install/lib
objdump -p _install/bin/qemu-system-aarch64 | grep RUNPATH

# 推荐设置环境变量~/.bashrc或~/.zshrc
export PATH="$HOME/tools/qemu-10.2.0/bin:$PATH"

compile_command.json

编译会自动生成compile_command.json

1
cp build/compile_command.json .

gdb 调试

qemu目录下有一个.gdbinit,在此目录下执行gdb会自动执行scripts/qemu-gdb.py这个脚本, 具体debug方法参考:

gdb使用,参考: