目录

写在前面

1.获取源文件

2.安装相关依赖包

3.修改环境变量

4.编译GCC


写在前面

刚刚接触RISCV编译器,根据网上RISCV toolchain工具链的搭建方法,结合自己体会,写点儿学习笔记,也供大家参考一下。

参考文章链接:

搭建RISC-V编译环境与运行环境_yushulx的专栏-CSDN博客

riscv各种版本gcc工具链编译与安装_weiqi7777的博客-CSDN博客_riscv工具链

RISC-V GNU 工具链:安装与使用 - 迈克老狼2012 - 博客园

搭建环境使用的 ubuntu 21.04

1.获取源文件

(1)使用git命令,直接从github上clone源文件,优势:编译容易通过,文件较完整,可以随时更新;缺点:下载速度较慢,可能会出现clone失败的问题,并且clone失败需要全部删除重新下载。

git clone --recursive https://github.com/riscv/riscv-gnu-toolchain

或者使用下列命令

git clone https://github.com/riscv/riscv-gnu-toolchaincd riscv-gnu-toolchaingit submodule update --init --recursive

如果找不到git命令,说明没有安装git,需要手动安装

sudo apt-get install git

访问github速度较慢可参考文章:

如何快速进入github_csust_sq的博客-CSDN博客

(2)使用已经下载并编译通过的压缩文件,优势:下载速度快,获取较容易,编译容易通过;缺点:无法通过clone更新,只能手动下载更新。附下载链接(亲测编译通过且能正常使用):

链接:https://pan.baidu.com/s/1sN9twoqcfzLYMv6z5ZlYYQ
提取码:s7ix 

(3)手动进入github库 https://github.com/riscv/riscv-gnu-toolchain 下载相关文件,部分库需要手动输入网址进入(不推荐)

以下是各个仓库的github地址:

riscv-gcc https://github.com/riscv/riscv-gcc
riscv-glibc https://github.com/riscv/riscv-glibc
riscv-newlib https://github.com/riscv/riscv-newlib
riscv-dejagnu https://github.com/riscv/riscv-dejagnu
riscv-gdb https://github.com/riscv/riscv-binutils-gdb.git
riscv-binutils https://github.com/riscv/riscv-binutils-gdb.git
riscv-qemu https://github.com/riscv/riscv-qemu.git

2.安装相关依赖包

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

3.修改环境变量

(1)打开bashrc

sudo vim ~/.bashrc

(2)添加环境变量,最后一行后添加如下代码,可视情况修改

RISCV  指定toolchain文件夹所在位置

PATH    指定生成的编译工具链存放位置

export RISCV="/home/sq/riscv-toolchain"
export PATH=$PATH:$RISCV/bin

(3)然后重启.bashrc

source ~/.bashrc

4.编译GCC

(1)新建build文件夹,存放makefile等相关文件,给予toolchain文件夹权限,给777权限的原因是编译过程中出现  permission denied 错误,使用sudo也无法解决,如果没碰到,不给777权限也可以。

cd riscv-toolchainmkdir buildsudo chmod -R 777 ../riscv-toolchaincd build

(2)编译riscv64-unknown-elf-gcc

../configure --prefix=RISCV --with-arch=rv64gc --with-abi=lp64d
make

(3)编译riscv32-unknown-elf-gcc

../configure --prefix=RISCV --with-arch=rv32gc --with-abi=ilp32d
make

(4)编译riscv64-unknown-linux-gnu-gcc

../configure --prefix=RISCV --with-arch=rv64gc --with-abi=lp64d --enable-linux
make linux

(5)编译riscv32-unknown-linux-gnu-gcc

../configure --prefix=RISCV --with-arch=rv32gc --with-abi=ilp32d --enable-linux
make linux

参数说明:

--with-arch

制定目标平台指令集,有效的选项值如下:

  • rv32i[m][a][f[d]][c]
  • rv32g[c]
  • rv64i[m][a][f[d]][c]
  • rv64g[c]

 --with-abi

指定ABI调用规则,有效的选项值如下:

  • ilp32    ilp32f    ilp32d
  • lp64     lp64f     lp64d

区别如下:

--prefix

指定工具链文件路径

RISCV toolchain编译工具链搭建相关推荐

  1. Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  2. Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  3. ARM 编译工具链详解

    ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...

  4. 如何选取 android 系统上的编译工具链

    https://mdgsf.github.io/2020/07/23/miscellanea-cpu/ 先介绍一些基础背景知识. Intel. 我们一般买的电脑都是 Intel 的 CPU. AMD. ...

  5. clang+cmake设置编译工具链

    之前手动编译了clang,但是使用过程中遇到了很多问题,比如依赖的gcc版本问题,目前还没有解决.这里记录一下 手动编译clang 首先拉取llvm的源码 git clone https://gith ...

  6. gcc mips64编译后无法运行在octeon上运行_编译工具链

    软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...

  7. 视频编解码(一):编解码器cedarc/libcedarx编译工具链配置

    1.下载代码-配置ve support/ion 2.拷贝.bashrc文件并改变相应的路径path(在export),加上相应的编译工具链接,最后运行source .bashrc 3.新建media目 ...

  8. MDK编译过程及ARM编译工具链

    欢迎加入[Linux C/C++/Python社区]一起探讨和分享Linux C/C++/Python/Shell编程.机器人技术.机器学习.机器视觉.嵌入式AI相关领域的知识和技术. MDK编译过程 ...

  9. VSP编译工具链安装

    VSP编译工具链的安装以及环境配置 vsp的环境配置需要安装三个工具链分别是: mcu的csky-abiv2-elf dsp的xplorer,以及processor core:GXHifi4_1707 ...

最新文章

  1. 大数据分析与可视化报告会成功召开(附PPT下载)
  2. docker 安装ElasticSearch 6.x
  3. [html] 举例说明当我们在写布局时,都有哪些边界的情况需要关注的?
  4. mysql 8.0配置主从同步_MySQL 8.0 主从同步
  5. Vue 使用 v-show 失效
  6. 双机热备、双机互备与 双机双工的区别
  7. 在线编程无法在sublime中使用input()和raw_input()的解决方法
  8. 运气真不错:3月取到的TeaVM恰好能够运行,之前之后都有问题
  9. 视频安防监控系统工程设计规范GB 50395-2007
  10. 淘宝联盟饿了么推广 API取链转链 永久有效
  11. 刚拿到手新鲜的offer,给大家分享一下我的面试心得
  12. centos、Windows双系统安装及修复引导启动项
  13. fastjson不序列化空属性,解决办法
  14. 转《MCU低功耗设计》
  15. 抓包工具Fiddler下载安装
  16. javascript库概念与连缀
  17. 应用数学考研跨考计算机,数学专业考研三大方向_跨考网
  18. 一文搞定校验码(奇偶校验,海明,CRC 码)
  19. C-Mold 2000.1 1CD(模流分析系统)
  20. VMware 安装Linux centOS 8

热门文章

  1. 计算机无法屏幕亮度,今天详解win10电脑屏幕亮度无法调节的具体解决手法
  2. html简洁的错误页面设计,40个非常有创意的404错误页面设计
  3. java tomcat 404配置_在Tomcat中配置404自定义错误页面详解
  4. five86-1靶机渗透攻略
  5. SS2H框架搭建,基础上篇
  6. Bilibili综合分析
  7. 锐捷 linux无法上网,通过锐捷认证了,为什么还不能上网?
  8. 【《关于我一个小学生用C++写了个抽奖游戏这件事》】
  9. ng2 绑定输出html,Angular2的数据绑定
  10. 使用 MAUI 在 Windows 和 Linux 上绘制 PPT 的图表