RISCV toolchain编译工具链搭建
目录
写在前面
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编译工具链搭建相关推荐
- Linux 之八 完整嵌入式 Linux 环境、(交叉)编译工具链、CPU 体系架构、嵌入式系统构建工具
最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...
- Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构
最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...
- ARM 编译工具链详解
ARM 编译工具链详解 GNU Arm Embedded Toolchain 是用于 C/C++ 和汇编编程的即用型开源工具套件.GNU Arm 嵌入式开发工具链适用于 32 位 Arm Cortex ...
- 如何选取 android 系统上的编译工具链
https://mdgsf.github.io/2020/07/23/miscellanea-cpu/ 先介绍一些基础背景知识. Intel. 我们一般买的电脑都是 Intel 的 CPU. AMD. ...
- clang+cmake设置编译工具链
之前手动编译了clang,但是使用过程中遇到了很多问题,比如依赖的gcc版本问题,目前还没有解决.这里记录一下 手动编译clang 首先拉取llvm的源码 git clone https://gith ...
- gcc mips64编译后无法运行在octeon上运行_编译工具链
软件的编译过程由一系列的步骤完成,每一个步骤都有一个对应的工具.这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这些工具为工具链. Linux系统上,通常只需要使用 ...
- 视频编解码(一):编解码器cedarc/libcedarx编译工具链配置
1.下载代码-配置ve support/ion 2.拷贝.bashrc文件并改变相应的路径path(在export),加上相应的编译工具链接,最后运行source .bashrc 3.新建media目 ...
- MDK编译过程及ARM编译工具链
欢迎加入[Linux C/C++/Python社区]一起探讨和分享Linux C/C++/Python/Shell编程.机器人技术.机器学习.机器视觉.嵌入式AI相关领域的知识和技术. MDK编译过程 ...
- VSP编译工具链安装
VSP编译工具链的安装以及环境配置 vsp的环境配置需要安装三个工具链分别是: mcu的csky-abiv2-elf dsp的xplorer,以及processor core:GXHifi4_1707 ...
最新文章
- 大数据分析与可视化报告会成功召开(附PPT下载)
- docker 安装ElasticSearch 6.x
- [html] 举例说明当我们在写布局时,都有哪些边界的情况需要关注的?
- mysql 8.0配置主从同步_MySQL 8.0 主从同步
- Vue 使用 v-show 失效
- 双机热备、双机互备与 双机双工的区别
- 在线编程无法在sublime中使用input()和raw_input()的解决方法
- 运气真不错:3月取到的TeaVM恰好能够运行,之前之后都有问题
- 视频安防监控系统工程设计规范GB 50395-2007
- 淘宝联盟饿了么推广 API取链转链 永久有效
- 刚拿到手新鲜的offer,给大家分享一下我的面试心得
- centos、Windows双系统安装及修复引导启动项
- fastjson不序列化空属性,解决办法
- 转《MCU低功耗设计》
- 抓包工具Fiddler下载安装
- javascript库概念与连缀
- 应用数学考研跨考计算机,数学专业考研三大方向_跨考网
- 一文搞定校验码(奇偶校验,海明,CRC 码)
- C-Mold 2000.1 1CD(模流分析系统)
- VMware 安装Linux centOS 8
热门文章
- 计算机无法屏幕亮度,今天详解win10电脑屏幕亮度无法调节的具体解决手法
- html简洁的错误页面设计,40个非常有创意的404错误页面设计
- java tomcat 404配置_在Tomcat中配置404自定义错误页面详解
- five86-1靶机渗透攻略
- SS2H框架搭建,基础上篇
- Bilibili综合分析
- 锐捷 linux无法上网,通过锐捷认证了,为什么还不能上网?
- 【《关于我一个小学生用C++写了个抽奖游戏这件事》】
- ng2 绑定输出html,Angular2的数据绑定
- 使用 MAUI 在 Windows 和 Linux 上绘制 PPT 的图表