【RISC-V】riscv-tools的编译安装

文章目录

  • 前言
  • 一、操作步骤
    • 下载安装riscv-tools并安装其依赖
  • 二、测试安装是否成功


前言

本系列想利用gem5模拟器进行全系统模拟RISC-V,并进行系统的设计空间探索。本章是第二步:riscv-tools的编译安装,即risc-v模拟器和一些其他必要的risc-v工具,例如riscv-pk,其中包含bbl,用于Linux和类似操作系统内核的引导加载程序,还包含pk,服务系统通过将目标机应用程序转发到主机来调用目标机器应用程序的代理内核。上一章需要用到本章的pk进行交叉编译的程序的运行。

一、操作步骤

下载安装riscv-tools并安装其依赖

我把几个步骤放在一起了,每个步骤的具体的说明可以参考上一篇riscv-gnu-toolchain的安装,思路一致。

#下载riscv-tools
git clone https://github.com/riscv/riscv-tools.git
#更新子模块
git submodule update --init --recursive

这个比较好下载
由于build.sh中用到了$RISCV,所以我们需要在编译之前指定$RISCV

#环境变量
export RISCV=/home/pc/jupyter/xiaolu/riscv-fs/installation/toolchain/
mkdir /home/pc/jupyter/xiaolu/install/riscv/toolchain
./build.sh

大概编译二十多分钟(如果是rocket-tools,由于加上了riscv-gnu-toolchain,需要一个小时)

export PATH="$RISCV/bin:$PATH"

安装依赖

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev libfl-dev

二、测试安装是否成功

出现下面这句话即为成功
在这里插入图片描述
再尝试我们上一章生成的hello是否可以执行

spike pk hello

在这里插入图片描述
输出hello world!,成功。

如果出现

User fetch segfault @ 0xfffffffffffffffe

segfault的意思是段错误
原因是hello.c的编译目标不是riscv64的newlib
重新执行

riscv64-unknown-elf-gcc -o hello hello.c
spike pk hello

即可

你可能感兴趣的:(RISC-V,linux,risc-v,ubuntu)