Last update: 2024/12/15
Window 11 Home 24H2上でWSLを使ってUbuntu 24.04.1 LTSで実行。
WSLにUbuntuがインストールされていること。インストール方法は以下を参照。
Windows11でWSLを使ってLinuxを使う作って学ぶコンピュータアーキテクチャという本を読みながらRISC-Vの勉強をしているが、本のUbuntuはversionが古めのため、Ubuntu 24.04.4.1 LTSで環境構築をした。基本的には以下の公式githubのREADMEを読みながら進めていく。
https://github.com/riscv-collab/riscv-gnu-toolchain色々とパッケージをインストールするが、まずは一回updateしておく。(WSLをインストールした直後だといろいろ古くなってたりするため)
$ sudo apt-get update
事前準備として、Toolchainに必要なパッケージをインストールする。
$ sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip python3-tomli libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev libslirp-dev
ホームディレクトリなど適当な場所にtoolchainのソースコードをダウンロードする。
$ git clone https://github.com/riscv/riscv-gnu-toolchain
Cloning into 'riscv-gnu-toolchain'...
remote: Enumerating objects: 9537, done.
remote: Counting objects: 100% (430/430), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 9537 (delta 369), reused 324 (delta 324), pack-reused 9107 (from 3)
Receiving objects: 100% (9537/9537), 6.50 MiB | 6.28 MiB/s, done.
Resolving deltas: 100% (4753/4753), done.
インストール先は書き込み権限がある場所ならどこでもよいが、今回はホームディレクトにriscvというディレクトリを作ってインストールすることにする。ダウンロードしたriscv-gnu-toolchainに移動して以下./configureとmakeを実行する。
$ mkdir ~/riscv
cd riscv-gnu-toolchain/
./configure --prefix=/${HOME}/riscv --enable-multilib
make
インストールしたらPATHを通す。なお、WSLを閉じるとまたPATHを設定する必要があるため、~/.bashrcの最後に追加するなどしておくと、WSLを起動したときに自動的にPATHが設定される。
$ export PATH=${HOME}/riscv/bin:${PATH}
$ export LD_LIBRARY_PATH=${HOME}/riscv/lib:${LD_LIBRARY_PATH}
ここまでやったら一度以下を実行してみて、versionが表示されたらtoolchainはインストールできている。
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc () 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
今回は以下のToolもインストールする。
なお、これらについてもprefixでディレクトリを指定する必要があるが、toolchainをインストールしたディレクトリを指定する。細かく書くと長くなるので、必要なコマンドだけ書いておく。git cloneはすべてホームディレクトリで実行した。まずriscv-isa-simのインストール。
$ git clone https://github.com/riscv-software-src/riscv-isa-sim.git
$ cd riscv-isa-sim/
$ sudo apt-get install device-tree-compiler libboost-regex-dev libboost-system-dev
$ mkdir build
$ cd build
$ ../configure --prefix=/${HOME}/riscv
$ make
$ sudo make install
次にriscv-testsのインストール。
$ git clone https://github.com/riscv-software-src/riscv-tests.git
$ cd riscv-tests
$ git submodule update --init --recursive
$ autoconf
$ ./configure --prefix=/${HOME}/riscv/target
$ make
$ sudo make install
最後にriscv-pkのインストール。
$ git clone https://github.com/riscv-software-src/riscv-pk.git
$ cd riscv-pk/
$ mkdir build
$ cd build
$ ../configure --prefix=/${HOME}/riscv --host=riscv64-unknown-elf
$ make
$ sudo make install
インストール後、試しに以下のコマンドを打ってみると、spikeがインストールされていることが確認できた。
$ spike
Spike RISC-V ISA Simulator 1.1.1-dev
...
Copyright (c) 2024 kd