这篇文章上次修改于 436 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
安装依赖:
sudo apt 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
下载 riscv-gnu-toolchain:
git clone https://github.com/riscv/riscv-gnu-toolchain
如果选择安装路径为 /opt/riscv
,则将 /opt/riscv/bin
添加到 PATH。
然后编译安装工具链:
mkdir build
cd build
# 默认目标是 RV64GC,--enable-multilib 可以使得 64 位的工具链可以在 32 位系统上运行
../configure --prefix=/opt/riscv --enable-multilib
# 也可以选择目标为 RV32GC
# ./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
# 以下两个命令可以选择一个执行,或者都执行
# newlib 和 linux 工具链可以放在同一个目录下
# 但是两个不同版本的 newlib 或两个不同版本的 linux 工具链不要放到同一个目录下
sudo make -j$(nproc) # 安装 newlib 工具链,/opt/riscv/bin 中生成 riscv64-unknown-elf-
sudo make -j$(nproc) linux # 安装 linux 工具链,/opt/riscv/bin 中生成 riscv64-unknown-linux-gnu-
耗时很长,约 1h
回归测试:
$ sudo make -j$(nproc) report
========= Summary of gcc testsuite =========
| # of unexpected case / # of unique unexpected case
| gcc | g++ | gfortran |
rv32i/ ilp32/ medlow | 0 / 0 | 0 / 0 | - |
rv32iac/ ilp32/ medlow | 0 / 0 | 0 / 0 | - |
rv32im/ ilp32/ medlow | 0 / 0 | 0 / 0 | - |
rv32imac/ ilp32/ medlow | 0 / 0 | 0 / 0 | - |
rv32imafc/ ilp32f/ medlow | 0 / 0 | 0 / 0 | - |
rv64imac/ lp64/ medlow | 0 / 0 | 0 / 0 | - |
rv64imafdc/ lp64d/ medlow | 0 / 0 | 0 / 0 | - |
耗时很长,约 3h
没有评论