基于RISC-V交叉编译器包括32bit和64bit两种类型,其中每种类型又包括裸机版本(newlib)和动态链接库版本(linux glibc)。不同类型、版本的gcc的安装仅在配置文件上存在差异,具体安装流程(以64bit linux的版本为例,安装流程参考riscv-gnu-toolchain的说明文档)如下所示:
1.首先下载riscv-gnu-toolchain,可以在线使用git克隆,也可到github官网下载risc-v的工具链软件。
https://github.com/riscv-collab/riscv-gnu-toolchain/tags
本节使用git进行在线安装,命令如下所示:
git clone GitHub - riscv-collab/riscv-gnu-toolchain: GNU toolchain for RISC-V, including GCC
2.然后安装riscv-gnu-toolchain的必备库文件(基于ubuntu20.4),如下所示:
sudo 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-dev ninja-build
3.configure配置riscv-gnu-toolchain的配置文件,针对32bit、64bit的芯片的配置表如下所示:
表 1 配置参数设置(32bit和64bit)
芯片 类型 | --with-arch(架构类型) | --with-abi(芯片ABI) |
32bit | rv32gc | ilp32 (32-bit soft-float), ilp32d (32-bit hard-float), ilp32f (32-bit with single-precision in registers and double in memory, niche use only) |
64bit | rv64gc | lp64 (64-bit soft-float), lp64d (64-bit hard-float), lp64f (64-bit with single-precision in registers and double in memory, niche use only) |
以64bit的硬件浮点芯片为例,配置命令如下所示:
./configure --prefix=/opt/pkg/riscv --with-arch=rv64gc --with-abi=lp64d
4.进行gcc的编译(其中裸机和linux的gcc编译方式存在差异,注意:保持联网,需要在线下载gcc源码,且编译时间较长,以linux系统gcc编译为例)。
make (裸机)
make linux(linux系统)
注意:裸机开发适用于单机嵌入式软件如RTOS,linux系统适用于带操作系统软件(基于glibc);
5.进入riscv-gcc的安装目录/opt/pkg/riscv,安装完成的gcc文件目录及在安装目录bin文件中查看gcc的版本的命令,分别如下所示:
6.配置环境变量,然后在任意路径查找riscv64-gcc的版本号,命令如下所示:
export PATH=/opt/pkg/riscv/bin:$PATH
riscv64-unknown-linux-gnu-gcc --version