riscv-gnu-toolchain

1. WSL の準備

  1. Windows で WSL2 + Ubuntu をインストール

    wsl --install
  2. Ubuntu ターミナルを開きます


2. 必要なパッケージのインストール

sudo apt update
sudo apt install git make autoconf automake libmpc-dev libmpfr-dev libgmp-dev \
gawk build-essential bison flex texinfo gperf libtool patchutils \
bc zlib1g-dev curl
  • ビルドや GitHub 取得に必要なツールです


3. GitHub から RISC-V GCC の取得

  • RISC-V の公式リポジトリをクローン

git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
  • デフォルトでは 64bit Linux 用 が取得されます

  • PicoRV32 などの組込み向けには --with-arch=rv32im --with-abi=ilp32 を指定してビルドします


4. GCC のビルド(RV32IM)

mkdir build
cd build
../configure --prefix=$HOME/riscv32-elf --with-arch=rv32im --with-abi=ilp32
make -j$(nproc)
make install
  • $HOME/riscv32-elf にインストールされます

  • -j$(nproc) は CPU コア数に応じて並列ビルド


5. PATH を設定

  1. ~/.bashrc に追記:

export PATH=$HOME/riscv32-elf/bin:$PATH
  1. 反映:

source ~/.bashrc
  1. 動作確認:

riscv32-unknown-elf-gcc --version
  • バージョンが表示されれば成功


6. コンパイルの例

# C プログラム
riscv32-unknown-elf-gcc -O2 -march=rv32im -mabi=ilp32 main.c -o main.elf

# HEX に変換(FPGA ROM用)
riscv32-unknown-elf-objcopy -O ihex main.elf main.hex

  • これで FPGA の $readmemh("main.hex", mem) で読み込める形式になります


ポイント

  • WSL 上では Windows のパスではなく Linux パス を使うこと

    • 例: C:\riscv32-elf ではなく /home/username/riscv32-elf/bin

  • ~/.bashrc に PATH を追加することで常時使える

  • source ~/.bashrc で反映されます


💡 この方法で WSL 上で GitHub から取得した RISC-V GCC を正しく PATH に通して、C → ELF → HEX まで自動化 できます