Инструкция основанная на CentOS 7.6
yum install -y git make gcc glib2-devel zlib-devel pixman-devel bison flex
mkdir -p ~/rootfs
export ROOTFS=~/rootfs
export PATH=${ROOTFS}/bin:${PATH}
cd ~/
git clone https://github.com/qemu/qemu
# https://download.qemu.org/qemu-3.1.0.tar.xz
# tar xf qemu-3.1.0.tar.xz
cd qemu
git checkout v3.1.0
./configure --prefix=${ROOTFS} \
--target-list=arm-softmmu,mips-softmmu,riscv32-softmmu,riscv64-softmmu,arm-linux-user,mips-linux-user,riscv32-linux-user,riscv64-linux-user \
--enable-debug \
--extra-cflags="-g3" --extra-ldflags="-g3" \
--disable-strip --disable-pie
make -j $(nproc) && make install
yum install -y epel-release;yum update;yum install -y gcc-arm-linux-gnu wget bc
cd ~/; mkdir -p ~/linux-build
wget https://mirror.yandex.ru/pub/linux/kernel/v4.x/linux-4.20.8.tar.xz
tar xf linux-4.20.8.tar.xz
cd linux-4.20.8
make vexpress_defconfig CROSS_COMPILE=arm-linux-gnu- ARCH=arm O=../linux-build
make -j $(nproc) CROSS_COMPILE=arm-linux-gnu- ARCH=arm O=../linux-build
yum install -y gdb
debuginfo-install glib2-2.56.1-2.el7.x86_64 glibc-2.17-260.el7_6.3.x86_64 libgcc-4.8.5-36.el7.x86_64 libstdc++-4.8.5-36.el7.x86_64 ncurses-libs-5.9-14.20130511.el7_4.x86_64 pcre-8.32-17.el7.x86_64 pixman-0.34.0-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
cd ~/
qemu-system-arm -m 512 -M vexpress-a9 -kernel ~/linux-build/arch/arm/boot/zImage -dtb ~/linux-build/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -append "console=ttyAMA0" -monitor stdio -display vnc=:5
gdb --args qemu-system-arm -m 512 -M vexpress-a9 -kernel ~/linux-build/arch/arm/boot/zImage -dtb ~/linux-build/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -append "console=ttyAMA0" -monitor stdio -display vnc=:5
- QEMU Build Considerations For Debugging (https://www.cnblogs.com/root-wang/p/8005212.html)
- ARM Versatile Express Emulation On Qemu From Scratch: Part 1 (https://learningfromyoublog.wordpress.com/2016/04/05/131/)