Cross-build RISC-V QEMU
2020-1-26
| 2026-3-19
本文字數 257閱讀時長 1 分鐘
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

  1. dpkg 加入 RISC-V 架構:
      • sudo dpkg --add-architecture riscv64
  1. 新增 RISC-V package sources:
      • sudo vim /etc/apt/sources.list
      • 新增以下 RISC-V sources:
        • 並限制以下的 sources 為 amd64 (加上:[arch=amd64]):
      1. 更新套件清單:
          • sudo apt update
      1. 安裝開發套件:
          • sudo apt install crossbuild-essential-riscv64
          • sudo apt install zlib1g-dev:riscv64 libglib2.0-dev:riscv64 libpixman-1-dev:riscv64 libpcre2-dev:riscv64 libffi-dev:riscv64 libselinux1-dev:riscv64
      1. 由於 Ubuntu 沒提供 libmount.a,需手動編譯 util-linux 並處理 crc32c 符號衝突:
        1. 下載 util-linux source codes:
        2. cd util-linux
        3. ./autogen.sh
        4. ./configure --host=riscv64-linux-gnu --enable-static --disable-shared --disable-all-programs --enable-libmount --enable-libblkid CFLAGS="-Dcrc32c=util_linux_crc32c"
        5. make -j
      1. 複製 libmount.alibblkid.a 至系統交叉編譯路徑:
          • sudo cp .libs/libmount.a .libs/libblkid.a /usr/lib/riscv64-linux-gnu/
      1. 設定環境變數:
          • export PKG_CONFIG=pkg-config
          • export PKG_CONFIG_LIBDIR=/usr/lib/riscv64-linux-gnu/pkgconfig:/usr/share/pkgconfig
          • export PKG_CONFIG_SYSROOT_DIR=/
      1. 切到 QEMU 的資料夾並 configure QEMU (with debug info):
          • ./configure --cross-prefix=riscv64-linux-gnu- --cpu=riscv64 --target-list=riscv64-softmmu --static --enable-debug
      1. 編譯 QEMU:
          • make -j
      1. 最後 QEMU 的執行檔會在:./build/qemu-system-riscv64
      2. QEMU
      3. QEMU Decodetree 語法介紹 (Part 1.)Build QEMU environments
        Loading...