Xinlong | 实验室 - RISC-V
type: channel
link: https://wulongxin.com/index.php/tag/RISC-V/
items: RISC-V 环境搭建

RISC-V 环境搭建
type: item
date: 2021-01-11T00:50:00+08:00
description: RISC-V 环境搭建考虑到目前国内网络上RISC-V环境搭建的成体系资料太少。于是记录将我自己的环境搭建经验分享出来，同时也为我自己下次重新配置环境做个备份。什么是RISC-VRISC-V，是一代RISC指令级架构，与Intel的x86以及AMD指令集处于同一层级，不同的是RISC架构是简单指令集，x86与amd是复杂指令集。RISC-V指令集的设计与实现都遵从所谓“大道至简”的思想，指令条数较少，性能也相对较高。但是目前使用RISC-V架构的计算机很少，貌似只有PicoRio。所以目前博主这种普通老百姓只能通过搭建RISC-V的模拟环境进行RISC-V（下称RV）的相关开发。环境搭建环境宿主机要求博主使用的得阿里云学生机，1核2G，40G硬盘。服务器上还部署着博客以及jenkins，jupyter等，因此有些不够用。大致要求：2~4G内存，因为如果要运行虚拟机，需要给虚拟机分配部分内存。30G硬盘空间，在环境配置过程后，大概会有30GB左右的代码、中间文件，二进制文件等。以上两项就是博主在搭建环境时发现的主要痛点。搭建RV环境的清单riscv-gnu-toolchain 交叉编译工具链，后续很多东西的基础Simulator 仿真器，仿真运行RV指令集的程序pkspikeEmulator 虚拟机，运行RV指令集操作系统，再运行程序QEMUkerneldriveRISC-V GNU Toolchain获取源码：GitHub上RV官方的仓库：RISC-V GNU ToolchainGitee上每天同步的镜像仓库：Mirrors RISC-V GNU Toolchain以上两个仓库都可，但是由于国内，GitHub仓库拉取速度实在拉胯，博主多次尝试，最终选用了Gitee镜像。首先克隆仓库代码：git clone https://gitee.com/mirrors/riscv-gnu-toolchain.git cd riscv-gnu-toolchain安装依赖工具Ubuntusudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-devFedora/CentOS/RHEL OSsudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-develArch Linuxpacman -Syyu autoconf automake curl python3 mpc mpfr gmp gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib expatOS Xbrew install python3 gawk gnu-sed gmp mpfr libmpc isl zlib expat编译RV GCC这里有两种编译选项，生成的目标文件分别是riscv64-unknown-elf-gcc和riscv64-unknown-linux-gnu-gcc，个人建议选择前者（或者都编译），因为后面编译Simulator需要用到，用另一个有报错的可能。编译riscv64-unknown-elf-gcc：./configure --prefix=/opt/riscv sudo make编译riscv64-unknown-linux-gnu-gcc:./configure --prefix=/opt/riscv sudo make linux同时编译riscv64-unknown-elf-gcc和riscv64-unknown-linux-gnu-gcc:./configure --prefix=/opt/riscv --enable-multilib make # or make linux这两个gcc的区别在于，elf-gcc是静态链接，linux-gnu-gcc是动态链接。添加环境变量：将以下代码追加入/etc/profile文件中RISCV=/opt/riscv export RISCV export PATH=$PATH:${RISCV}/bin保存后输入source /etc/profile更新环境变量输入riscv64-un…