RISC-V GNU 工具链(riscv-gnu-toolchain)是用于开发基于 RISC-V 架构的软件和系统的工具集合。它是由 GNU 工具链(GNU Toolchain)的一部分,并针对 RISC-V 架构进行了定制和优化。

主要组件包括:

  1. 交叉编译器(GCC):包括 C 编译器(gcc)、C++编译器(g++)等,用于将源代码编译成针对 RISC-V 架构的可执行文件。
  2. 汇编器(as)和链接器(ld):用于将汇编语言代码和多个目标文件链接成可执行文件或库文件。
  3. 调试器(GDB):用于调试 RISC-V 程序,可以查看程序状态、断点调试、变量查看等。
  4. 目标文件分析工具(objdump、objcopy、nm):用于查看目标文件的信息、进行目标文件格式转换、查看目标文件的符号表等。
  5. 其他辅助工具:还包括一些其他的辅助工具,如用于静态分析的编译器选项、用于性能分析的 Profiling 工具等。

编译目标:

  • riscv64-unknown-elf-gcc
    编译环境
    x86 Ubuntu22.04

下载源码

git clone https://github.com/riscv/riscv-gnu-toolchain

github上已经明确写出

This repository uses submodules, but submodules will fetch automatically on demand, so --recursive or git submodule update --init --recursive is not needed.

所以不需要加后面的参数。make的时候需要的就自动clone了。

安装依赖

sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev libslirp-dev

准备安装路径

创建路径修改权限

sudo mkdir /opt/riscv
sudo mkdir /opt/riscv/riscv64
sudo chmod -R 777 /opt/riscv/riscv64/

增加环境变量

vim编辑当前用户的bashrc
vim ~/.bashrc
写入下面两行

export RISCV="/opt/riscv/riscv64"
export PATH=$PATH:$RISCV/bin

保存退出后执行
source ~/.bashrc

编译安装

创建编译目录

cd riscv-gnu-toolchain
mkdir build
cd build

编译 riscv64-unknown-elf-gcc

../configure --prefix=/opt/riscv/riscv64 --with-arch=rv64imca --with-abi=xxx
sudo make -jN

编译完成测试一下
riscv64-unknown-elf-gcc -v

Using built-in specs.
COLLECT_GCC=riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/opt/riscv/riscv64/libexec/gcc/riscv64-unknown-elf/13.2.0/lto-wrapper
Target: riscv64-unknown-el

出现上面内容说明编译成功