riscv-gnu-toolchain工具链下载安装(unbuntu)
  EiDSoKoozGAc 2023年11月02日 78 0


​​link​​


riscv-gnu-toolchain工具链下载安装

  • ​​一、安装依赖​​
  • ​​二、下载riscv-gnu-toolchain​​
  • ​​三、编译安装riscv-gnu-toolchain​​
  • ​​四、添加环境变量​​
  • ​​五、测试安装是否成功​​


一、安装依赖

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
  • 1

特别重要的一个依赖!单独说:

sudo apt-get install libnewlib-dev
  • 1

二、下载riscv-gnu-toolchain

RISCV平台的C/C++交叉编译器
源代码地址:​​​https://github.com/riscv/riscv-gnu-toolchain​​​ riscv工具链整个工程太大,在github下载再递归下载子文件夹,以国内的网络很容易超时断开。一般去码云gitee上面找镜像文件
国内的镜像地址:

git clone https://gitee.com/mirrors/riscv-gnu-toolchain.git
  • 1

几个riscv-*子模块的gitee镜像地址:

Submodule 'riscv-binutils' (https://gitee.com/mirrors/riscv-binutils-gdb.git) registered for path 'riscv-binutils'
Submodule 'riscv-dejagnu' (https://gitee.com/mirrors/riscv-dejagnu.git) registered for path 'riscv-dejagnu'
Submodule 'riscv-gcc' (https://gitee.com/mirrors/riscv-gcc.git) registered for path 'riscv-gcc'
Submodule 'riscv-gdb' (https://gitee.com/mirrors/riscv-binutils-gdb.git) registered for path 'riscv-gdb'
Submodule 'riscv-glibc' (https://gitee.com/mirrors/riscv-glibc.git) registered for path 'riscv-glibc'
Submodule 'riscv-newlib' (https://gitee.com/mirrors/riscv-newlib.git) registered for path 'riscv-newlib'

一共有7个submoule,先处理riscv-**开头的几个
比如:riscv-newlib,在/…/riscv-gnu-toolchain目录下

git clone --recursive https://gitee.com/mirrors/riscv-newlib.git
  • 1

其他几个riscv-*的模块参照此方法自行修改

PS:.riscv-binutils与riscv-gdb来自于同一个仓库,且与本地要求的文件夹名称不同,需用命令指定本地名,riscv-gdb同理。

git clone --recursive https://gitee.com/mirrors/riscv-binutils-gdb.git riscv-binutils
  • 1

三、编译安装riscv-gnu-toolchain

进入到riscv-gnu-toolchain的文件目录下,执行

cd riscv-gnu-toolchian
./configure --prefix=/opt/riscv
//#--prefix后面是你想要安装的位置,opt文件夹下默认是应用程序
sudo make -jN //#考虑到opt文件夹创建文件和删除文件需要用root权限

编译大概一个小时。
扩展内容:
上述编译会默认生成riscv64-unknown-linux-gnu-gcc版本的交叉编译器,但我们需要riscv64-unknown-elf-gcc。
riscv gcc可以编译成以下几个版本:

#riscv32-unknown-elf-gcc
#这是Newlib交叉编译器,针对riscv32架构
./configure --prefix=/opt/riscv32 --with-arch=rv32imc --with-abi=xxx
make
#--mabi可以选择如下:
#ilp32
#ilp32f
#ilp32d
#riscv64-unknown-elf-gcc
#这是Newlib交叉编译器,针对riscv64架构,编译riscv-tools需要用到
#默认64位 因此可以不要后面的内容
./configure --prefix=/opt/riscv64
make
#riscv32-unknown-linux-gnu-gcc
#这是Linux交叉编译器,使用的C运行库为linux中的标准glibc
./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
make linux
#riscv64-unknown-linux-gnu-gcc
#riscv64-multilib-elf-gcc
#riscv64-liunx-multilib-gcc

四、添加环境变量

最后添加环境变量,才能在任何路径下使用该应用/软件。

vim ~/.bashrc   //#然后添加语句
export PATH=/opt/riscv/bin:$PATH //#保存并更新环境
:wq
source ~/.bashrc

五、测试安装是否成功

方法一:执行下面命令,出现gcc的版本号

riscv64-unknown-elf-gcc --version
  • 1

方法二:去到一个不重要的路径新建c程序,使用交叉编译器编译。

echo -e '#include <stdio.h>\n int main(void) { printf("Helloworld!\\n"); return 0; }' > hello.c
riscv64-unknown-elf-gcc -o hello hello.c
#或者riscv64-unknown-linux-gnu-gcc -o hello hello.c

如果出现hello可执行文件即为成功。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  9E2BTpjt8nym   2023年12月06日   35   0   0 WindowsgitCentOS
EiDSoKoozGAc