type
Post
status
Published
date
Jan 26, 2020
slug
summary
介紹如何 cross-build 在 RISC-V 架構執行的 RISC-V QEMU。
tags
QEMU
category
Emulation
icon
password
Cross-build QEMU
OS 為 Ubuntu 22.04
- dpkg 加入 RISC-V 架構:
sudo dpkg --add-architecture riscv64
- 新增 RISC-V package sources:
sudo vim /etc/apt/sources.list- 新增以下 RISC-V sources:
- 並限制以下的 sources 為 amd64 (加上:
[arch=amd64]):
- 更新套件清單:
sudo apt update
- 安裝開發套件:
sudo apt install crossbuild-essential-riscv64sudo apt install zlib1g-dev:riscv64 libglib2.0-dev:riscv64 libpixman-1-dev:riscv64 libpcre2-dev:riscv64 libffi-dev:riscv64 libselinux1-dev:riscv64
- 由於 Ubuntu 沒提供
libmount.a,需手動編譯util-linux並處理crc32c符號衝突: - 下載
util-linuxsource codes: git clone [email protected]:util-linux/util-linux.gitcd util-linux./autogen.sh./configure --host=riscv64-linux-gnu --enable-static --disable-shared --disable-all-programs --enable-libmount --enable-libblkid CFLAGS="-Dcrc32c=util_linux_crc32c"make -j
- 複製
libmount.a及libblkid.a至系統交叉編譯路徑: sudo cp .libs/libmount.a .libs/libblkid.a /usr/lib/riscv64-linux-gnu/
- 設定環境變數:
export PKG_CONFIG=pkg-configexport PKG_CONFIG_LIBDIR=/usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfigexport PKG_CONFIG_SYSROOT_DIR=/
- 切到 QEMU 的資料夾並 configure QEMU (with debug info):
./configure --cross-prefix=riscv64-linux-gnu- --cpu=riscv64 --target-list=riscv64-softmmu --static --enable-debug
- 編譯 QEMU:
make -j
- 最後 QEMU 的執行檔會在:
./build/qemu-system-riscv64