1.*查看linux版本
lsb_release -b
#(lsb_release:Linux Standard Base- release )
出现如下字样
确认使用的linux版本为centos7
2.获取risc-v_toolchain
如果网络够好,可以轻松连接github,可以直接使用命令
$ git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
如果连接github不稳定,使用iscas镜像站提供的脚本
riscv-gnu-toolchain 及其子模块源码安装
第一步## 单独克隆
git clone https://mirror.iscas.ac.cn/riscv-toolchains/git/riscv-collab/riscv-gnu-toolchain.git
第二步## 同时克隆子模块,注意路径为 .git 替换为 .sh
curl https://mirror.iscas.ac.cn/riscv-toolchains/git/riscv-collab/riscv-gnu-toolchain.sh | bash
3.toolchain-prerequisites
如果可连接网络,直接执行
sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
如果需要离线安装,下载本人整合的toolchain-prerequisites压缩包或者在有网络连接的设备中按照依赖一一下载rpm软件包,
tar -zxvf解压后
首先cd到解压后文件内部的 rpms/python
执行
rpm -Uvh --force --nodeps *.rpm
安装python3
回到rpms路径,执行
rpm -Uvh --force *.rpm
未出现报错则安装成功
4.添加路径以及宏定义
在 ~/.bashrc中增加
#RISC-V TOOL CHAIN
export RISCV=/path/to/tools/riscv-gnu/2023.04.29(readme中推荐的路径)
export PATH=$RISCV/bin:$PATH
之后执行
source ~/.bashrc
使其生效
5.*安装devtoolset-gcc9
(在线以任意方法安装高版本gcc均可,centos自带的4.8.5不行)
离线通过联网设备下载来源devtoolset-gcc-9压缩包(分享中也有),解压.
su(获取root权限)
在解压后的文件夹中以以下顺序执行安装(直接复制粘贴所有指令执行就行)
rpm -ivh mpfr-3.1.1-4.el7.x86_64.rpm
rpm -ivh libmpc-1.0.1-3.el7.x86_64.rpm
rpm -ivh cpp-4.8.5-39.el7.x86_64.rpm
rpm -ivh gcc-4.8.5-39.el7.x86_64.rpm
rpm -ivh scl-utils-20130529-19.el7.x86_64.rpm
rpm -ivh zip-3.0-11.el7.x86_64.rpm
rpm -ivh unzip-6.0-21.el7.x86_64.rpm
rpm -ivh libquadmath-4.8.5-39.el7.x86_64.rpm
rpm -ivh libgfortran5-8.3.1-2.1.1.el7.x86_64.rpm
rpm -ivh libgcc-4.8.5-39.el7.i686.rpm
rpm -ivh dwz-0.11-3.el7.x86_64.rpm
yum localinstall perl*.rpm
rpm -ivh python-srpm-macros-3-32.el7.noarch.rpm
rpm -ivh redhat-rpm-config-9.1.0-88.el7.centos.noarch.rpm
rpm -ivh avahi-libs-0.6.31-20.el7.x86_64.rpm
rpm -ivh boost-regex-1.53.0-28.el7.x86_64.rpm
rpm -ivh libcgroup-0.41-21.el7.x86_64.rpm
rpm -ivh audit-libs-python-2.8.5-4.el7.x86_64.rpm
rpm -ivh libsemanage-python-2.5-14.el7.x86_64.rpm
rpm -ivh setools-libs-3.3.8-4.el7.x86_64.rpm
rpm -ivh python-IPy-0.75-6.el7.noarch.rpm
rpm -ivh checkpolicy-2.5-8.el7.x86_64.rpm
rpm -ivh policycoreutils-python-2.5-34.el7.x86_64.rpm
rpm -ivh devtoolset-9-runtime-9.1-0.el7.x86_64.rpm
rpm -ivh devtoolset-9-elfutils-libelf-0.176-6.el7.x86_64.rpm
rpm -ivh devtoolset-9-elfutils-libs-0.176-6.el7.x86_64.rpm
rpm -ivh devtoolset-9-elfutils-0.176-6.el7.x86_64.rpm
rpm -ivh devtoolset-9-dyninst-10.1.0-4.el7.x86_64.rpm
rpm -ivh devtoolset-9-binutils-2.32-16.el7.x86_64.rpm
rpm -ivh devtoolset-9-memstomp-0.1.5-5.el7.x86_64.rpm
rpm -ivh devtoolset-9-oprofile-1.3.0-4.el7.x86_64.rpm
rpm -ivh devtoolset-9-dwz-0.12-1.1.el7.x86_64.rpm
rpm -ivh devtoolset-9-libstdc++-devel-9.3.1-2.el7.x86_64.rpm
rpm -ivh devtoolset-9-strace-5.1-7.el7.x86_64.rpm
rpm -ivh devtoolset-9-valgrind-3.15.0-9.el7.x86_64.rpm
rpm -ivh devtoolset-9-make-4.2.1-2.el7.x86_64.rpm
rpm -ivh devtoolset-9-ltrace-0.7.91-2.el7.x86_64.rpm
rpm -ivh boost-system-1.53.0-28.el7.x86_64.rpm
rpm -ivh devtoolset-9-systemtap-runtime-4.1-9.el7.x86_64.rpm
rpm -ivh efivar-libs-36-12.el7.x86_64.rpm
rpm -ivh mokutil-15-2.el7.centos.x86_64.rpm
rpm -ivh devtoolset-9-systemtap-client-4.1-9.el7.x86_64.rpm
rpm -ivh kernel-debug-devel-3.10.0-1127.13.1.el7.x86_64.rpm
rpm -ivh devtoolset-9-systemtap-devel-4.1-9.el7.x86_64.rpm
rpm -ivh devtoolset-9-systemtap-4.1-9.el7.x86_64.rpm
rpm -ivh devtoolset-9-perftools-9.1-0.el7.x86_64.rpm
rpm -ivh ctags-5.8-13.el7.x86_64.rpm
rpm -ivh devtoolset-9-gcc-9.3.1-2.el7.x86_64.rpm
rpm -ivh devtoolset-9-gcc-c++-9.3.1-2.el7.x86_64.rpm
rpm -ivh tcl-8.5.13-8.el7.x86_64.rpm
之后运行!!!
scl enable devtoolset-9 bash
gcc -v
检查gcc版本
在哪个窗口运行,就仅在哪个窗口生效,运行后此窗口gcc的版本会升级为gcc 9
6.编译toolchain生成gcc
首先执行命令
scl enable devtoolset-9 bash
激活devtool-gcc-9(如果有高版本gcc可以无视这一步)
之后找到toolchain安装路径
cd xxx/riscv-gnu-toolchain
./configure --enable-multilib --prefix=xxx
(此步设置因需求而定,”prefix=”后的xxx为安装地址)
配置之后,进行编译
make -j`nproc` 或者make linux -j`nproc`
编译结束,没有报错
cd prefix/bin
ls
看一看如果生成了riscv64-unknown-gnu-gcc或者riscv64-unknown-elf-gcc 就成功啦
\ O(∩_∩)O /