RISC-V GNU 工具链(riscv-gnu-toolchain)是用于开发基于 RISC-V 架构的软件和系统的工具集合。它是由 GNU 工具链(GNU Toolchain)的一部分,并针对 RISC-V 架构进行了定制和优化。
主要组件包括:
- 交叉编译器(GCC):包括 C 编译器(gcc)、C++编译器(g++)等,用于将源代码编译成针对 RISC-V 架构的可执行文件。
- 汇编器(as)和链接器(ld):用于将汇编语言代码和多个目标文件链接成可执行文件或库文件。
- 调试器(GDB):用于调试 RISC-V 程序,可以查看程序状态、断点调试、变量查看等。
- 目标文件分析工具(objdump、objcopy、nm):用于查看目标文件的信息、进行目标文件格式转换、查看目标文件的符号表等。
- 其他辅助工具:还包括一些其他的辅助工具,如用于静态分析的编译器选项、用于性能分析的 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
出现上面内容说明编译成功