#!/bin/sh
git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git
cd riscv-gnu-toolchain
#use gitee source code
git clone --recursive https://gitee.com/mirrors/riscv-gcc.git gcc
git clone --recursive https://gitee.com/mirrors/riscv-dejagnu.git dejagnu
git clone --recursive https://gitee.com/mirrors/riscv-glibc.git glibc
git clone --recursive https://gitee.com/mirrors/riscv-newlib.git newlib
git clone --recursive -b fsf-gdb-10.1-with-sim https://gitee.com/mirrors/riscv-binutils-gdb.git gdb
git clone --recursive -b riscv-binutils-2.38 https://gitee.com/mirrors/riscv-binutils-gdb.git binutils
mkdir build
cd build
../configure --enable-multilib --prefix=$RISCV
make -j8
#--enable-multilib 如果不使用这个参数,在使用llvm 编译的时候 可能导致 hardware float error
$RISCV 是你安装路径 自己指定
如果你需要继续编译 LLVM, 请加上以下 命令
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir -p build && cd build && cmake -DCMAKE_INSTALL_PREFIX=$RISCV \
-DCMAKE_BUILD_TYPE=Release -DLLVM_OPTIMIZED_TABLEGEN=On \
-DLLVM_ENABLE_PROJECTS="clang;compiler-rt;lld" \
-DLLVM_LINK_LLVM_DYLIB=On ../llvm
$ make -j8 && make install
生成两个 RISCV64 工具链
riscv64-unknown-elf-gcc
riscv64-unknown-linux-gnu-gcc
如果编译LLVM 也会生成 对应的 clang
使用clang 编译程序
$RISCV/bin/clang --target=riscv64-unknown-elf --sysroot=$RISCV/riscv64-unknown-elf ./hello.c