当前位置: 首页 > 工具软件 > GNU toolchain > 使用案例 >

【RISC-V】riscv-gnu-toolchain的编译安装(含源码)

屠浩
2023-12-01


前言

RISC-V是精简指令集架构,由于开源,其学术研究比较丰富。体系结构研究者基本都会使用该架构进行设计,并基于它进行系统性能功耗等的分析。

本系列想利用gem5模拟器进行全系统模拟RISC-V,并进行系统的设计空间探索。本章是第一步:toolchain的编译安装,即交叉编译器(交叉编译器的作用:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码)

一、操作步骤

首先下载riscv-gnu-toolchain

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

如果下载不了,可以使用2022/3/13下载的版本:(包含gcc和quma)
链接:https://pan.baidu.com/s/1GgJ4Xo7tb_DYJB3Wjsataw
提取码:b8cr
需要大概6.65GB的磁盘

然后配置环境(安装依赖)

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

再编译安装riscv-gnu-toolchain

进入到riscv-gnu-toolchain的文件目录下,执行

cd riscv-gnu-toolchian
./configure --prefix=/opt/riscv
#--prefix后面是你想要安装的位置,opt文件夹下默认是应用程序
sudo make -jN #考虑到opt文件夹创建文件和删除文件需要用root权限

编译大概40min。
扩展内容
上述编译会默认生成riscv64-unknown-linux-gnu-gcc版本的交叉编译器,但我们需要riscv64-unknown-elf-gcc。
riscv gcc可以编译成以下几个版本:

#riscv32-unknown-elf-gcc
#这是Newlib交叉编译器,针对riscv32架构
./configure --prefix=/opt/riscv32 --with-arch=rv32imc --with-abi=xxx
make
#--mabi可以选择如下:
#ilp32
#ilp32f
#ilp32d

#riscv64-unknown-elf-gcc
#这是Newlib交叉编译器,针对riscv64架构,编译riscv-tools需要用到
#默认64位 因此可以不要后面的内容
./configure --prefix=/opt/riscv64
make


#riscv32-unknown-linux-gnu-gcc
#这是Linux交叉编译器,使用的C运行库为linux中的标准glibc
./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
make linux

#riscv64-unknown-linux-gnu-gcc
#riscv64-multilib-elf-gcc
#riscv64-liunx-multilib-gcc

最后添加环境变量(才能在任何路径下使用该应用/软件)

#进入~/.bashrc
vim ~/.bashrc
#然后添加语句
export PATH=/opt/riscv/bin:$PATH
#保存并更新环境
:wq
source ~/.bashrc

二、测试安装是否成功

方法一:

riscv64-unknown-elf-gcc --version

方法二:
去到一个不重要的路径新建c程序,使用交叉编译器编译

echo -e '#include <stdio.h>\n int main(void) { printf("Helloworld!\\n"); return 0; }' > hello.c
riscv64-unknown-elf-gcc -o hello hello.c
#或者riscv64-unknown-linux-gnu-gcc -o hello hello.c

如果出现hello可执行文件即为成功。
注意 此时还不能执行./hello或者spike pk hello。下一篇介绍如何运行,我们需要一个RSIC-V模拟器,也是riscv-tools的编译安装。

 类似资料: