编译 RISCV64 工具链 toolchain

卫阳炎
2023-12-01

#!/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


 

 类似资料: