RISC-V GNU Toolchain 工具链安装问题解决(含 stdio.h 问题解决)

我的安装过程主要参照 riscv-collab/riscv-gnu-toolchain 的官方 Readme 和这位佬的博客:RSIC-V工具链介绍及其安装教程 - 风正豪 (大佬的博客写的非常详细,唯一不足就是 sudo make linux -jxx 是全部小写。)
工具链前前后后我装了快5遍了,这篇博客主要是遇到的问题解决方案分享。

submodule 克隆失败

当然如果大家按照上面的博客中的虚拟机魔法配置方法修改上网后,克隆应该不会出问题。不过我自己采取更保险的方式是,根据根目录中的 .gitmodules 文件,在每个文件夹里分别手动克隆并切换分支 / 版本。(下面其中部分代码由于个人习惯我改为了 ssh 地址)

[submodule "binutils"]path = binutilsurl = https://sourceware.org/git/binutils-gdb.gitbranch = binutils-2_42-branch
[submodule "gcc"]path = gccurl = https://gcc.gnu.org/git/gcc.gitbranch = releases/gcc-13
[submodule "glibc"]path = glibcurl = https://sourceware.org/git/glibc.git
[submodule "dejagnu"]path = dejagnuurl = https://git.savannah.gnu.org/git/dejagnu.gitbranch = master
[submodule "newlib"]path = newliburl = https://sourceware.org/git/newlib-cygwin.gitbranch = master
[submodule "gdb"]path = gdburl = https://sourceware.org/git/binutils-gdb.gitbranch = gdb-14-branch
[submodule "qemu"]path = qemuurl = https://gitlab.com/qemu-project/qemu.git
[submodule "musl"]path = muslurl = https://git.musl-libc.org/git/muslbranch = master
[submodule "spike"]path = spikeurl = git@github.com:riscv-software-src/riscv-isa-sim.gitbranch = master
[submodule "pk"]path = pkurl = git@github.com:riscv-software-src/riscv-pk.gitbranch = master
[submodule "llvm"]path = llvmurl = git@github.com:llvm/llvm-project.gitbranch = release/17.x

比如:

cd pk
git clone git@github.com:riscv-software-src/riscv-pk.git
git checkout release/17.x

再根据官网版本号切换:
在这里插入图片描述

git reset --hard 2efabd3

最后执行 git submodule update --init 的时候其实相当于一个校验的过程。

stdio.h 找不到的问题

臭名昭著的问题。
其实本质原因在于我们用的不是自己编译安装的这个工具链,而是 ubuntu apt 下载的 gcc-riscv64-unknown-elf ,这个东西自从 ubuntu20 版本之后应该就有问题(头文件找不全)。可以通过 whereis riscv64-unknown-elf-gcc 查看我们使用工具链的优先级。
我们自己编译安装的工具链位于:/opt/riscv/bin
ubuntu apt 安装的工具链位于:/usr/bin
如图,这是我执行 riscv64-unknown-elf-gcc -v hello.c 时的部分输出信息:
在这里插入图片描述
正常来说 stdio.h 应该是在红框中的 /usr/riscv64-unknown-elf/include 里,但是 ubuntu 安装的时候缺少这个内容所以很多同学都遇到了这个工具链无法使用的问题。我们不要用它,用我们自己编译出来的 /opt/riscv/bin 里的工具链。只需要执行 sudo apt remove gcc-riscv64-unknown-elf 后重新打开窗口即可。
可以参考这个 issue 的讨论:stdio.h 头文件找不到 其中给出的另一种解决方式是使用另一款 ubuntu apt 安装的工具链:sudo apt install gcc-riscv64-linux-gnu ,其实这两种工具链我们的 riscv-gnu-toolchain 里面都有。
简单来说就是:
ubuntu 安装 newlib 工具链:sudo apt install gcc-riscv64-unknown-elf 用不了,报错 stdio.h 找不到
ubuntu 安装 linux 工具链:sudo apt install gcc-riscv64-linux-gnu 能用
但是我们自己编译的 riscv-gnu-toolchain 里面这两种都有,我建议要么就都用我们自己的,要么就只用 ubuntu 安装的 gcc-riscv64-linux-gnu .
终于成功!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

非关系型数据库--------------------Redis 群集模式

目录 一、集群原理 二、集群的作用 (1)数据分区 (2)高可用 Redis集群的作用和优势 三、Redis集群的数据分片 四、Redis集群的工作原理 五、搭建redis群集模式 5.1启用脚本配置集群 5.2修改集群配置 5.3启动redis节点 5…

Django--admin 后台管理站点

Django最大的优点之一,就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用,并不对大众开放。虽然admin的界面可能不是那么美观,功能不是那么强大,内容不一定符合你的要求,但是…

dm8 备份与恢复

dm8 备份与恢复 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

非关系型数据库——Redis基本操作

目录 一、Redis数据库常用命令 1.Set——存放数据 2.Get——获取数据 3.Keys——获取符合条件的键值 4.Exists——判断键值是否存在 5.Del——删除指定键值 6.Type——获取键值对应的类型 7.Rename——对已有键值重命名(覆盖) 8.Renamenx——对…

【蓝桥杯嵌入式】13届程序题刷题记录及反思

一、题目分析 考察内容: led按键(短按)PWM输出(PA1)串口接收lcd显示 根据PWM输出占空比调节,高频与低频切换 串口接收(指令解析)【中断接收】 2个显示界面 led灯闪烁定时器 二…

SV学习笔记(六)

覆盖率类型 写在前面 覆盖率是 衡量设计验证完备性 的一个通用词。随着测试逐步覆盖各种合理的场景,仿真过程会慢慢勾画出你的设计情况。覆盖率工具会 在仿真过程中收集信息 ,然后进行后续处理并且得到覆盖率报告。通过这个报告找出覆盖之外的盲区&…

动态属性的响应式问题和行内编辑的问题

动态属性的响应式问题 通过点击给目标添加动态数据,该数据不具备响应式特性 如下图: 点击编辑,前面的数据框会变成输入框,点取消会消失 // 获取数据 async getList () {const res await xxxthis.list res.data.rows// 1. 获…

【QT+QGIS跨平台编译】074:【libdxfrw跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、libdxfrw介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、libdxfrw介绍 libdxfrw是一个用于读取和写入DXF(Drawing Exchange Format)文件的开源C++库。DXF是一种由AutoCAD开发的文件格式,用于存储CAD(计算机辅助设计)图形数据,它…

使用 LLMLingua-2 压缩 GPT-4 和 Claude 提示

原文地址:Compress GPT-4 and Claude prompts with LLMLingua-2 2024 年 4 月 1 日 向大型语言模型(LLM)发送的提示长度越短,推理速度就会越快,成本也会越低。因此,提示压缩已经成为LLM研究的热门领域。 …

ensp华为AC+AP上线配置

AR1配置&#xff1a; <Huawei>system-view # 进入系统视图<Huawei>sysname R1 # 设备重命名[R1]dhcp enable # 开启DHCP功能[R1]interface GigabitEthernet0/0/0 # 进入接口 [R1-GigabitEthernet0/0/0]ip address 192.168.0.1 23 # 配置接口地址 [R1-GigabitE…

SpringBoot配置文件加载的优先级顺序

SpringBoot配置文件加载的优先级顺序 1.按文件类型2.按路径比较3.按命令行参数设置 1.按文件类型 SpringBoot的配置文件可以分为.properties .yml .yaml 在同一路径下&#xff08;比如都在classpath下&#xff09;三者的优先级顺序是.properties> .yml> .yaml 2.按路径…

基于tensorflow和kereas的孪生网络推理图片相似性

一、环境搭建 基础环境&#xff1a;cuda 11.2 python3.8.13 linux ubuntu18.04 pip install tensorflow-gpu2.11.0 验证&#xff1a;# 查看tensorflow版本 import tensorflow as tf tf.__version__ # 是否能够成功启动GPU from tensorflow.python.client import device_lib pr…

jvm基础三——类加载器

类加载器 在Java中&#xff0c;类加载器&#xff08;Class Loader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一部分&#xff0c;负责将类文件&#xff08;.class文件&#xff09;加载到JVM中&#xff0c;使得程序能够使用这些类。类加载器在Java中具有重要的作用&…

6 种事件驱动的架构模式

事件驱动架构(Event-Driven Architecture)是一种基于事件和事件处理的软件架构&#xff0c;它的核心思想是将系统的行为和逻辑抽象成一系列事件&#xff0c;这些事件在系统中按照一定的规则和顺序产生和传播&#xff0c;并被相应的处理器处理。事件驱动架构具有高度的灵活性、可…

【数据结构】考研真题攻克与重点知识点剖析 - 第 3 篇:栈、队列和数组

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

LogicFlow 在HTML中的引入与使用

LogicFlow 在HTML中的引入与使用 LogicFlow的引入与使用&#xff0c;相较于BPMNJS相对容易一些&#xff0c;更加灵活一些&#xff0c;但是扩展代码可能写得更多一些。 示例展示 使用方式 这个的使用方式就简单很多了&#xff0c;利用cdn把js下载下来&#xff0c;引入到HTML文…

c语言之向main函数传递参数

在c语言中&#xff0c;main函数也是可以传递传递参数的&#xff0c;业内向main函数传递参数的格式是 main(int argc,char *argv[]) 向main函数传递参数不是通过代码传递的&#xff0c;一般是通过dos命令传递 举个例子 #include<stdio.h> void main(int argc,char *ar…

PyTorch之计算模型推理时间

一、参考资料 如何测试模型的推理速度 Pytorch 测试模型的推理速度 二、计算PyTorch模型推理时间 1. 计算CPU推理时间 import torch import torchvision import time import tqdm from torchsummary import summarydef calcCPUTime():model torchvision.models.resnet18()…

使用pip install替代conda install将packet下载到anaconda虚拟环境

问题描述 使用conda install 下载 stable_baseline3出现问题 一番搜索下是Anaconda.org缺少源 解决方法 首先使用管理员权限打开 anaconda prompt 然后激活目标环境&#xff1a;conda activate env_name 接着使用&#xff1a;conda env list查看目标env的位置 如D:\anacon…

2023.4.7 机器学习周报

目录 引言 Abstract 文献阅读 1、题目 2、引言 3、过去方案和Motivation 4、Segment Anything模型 5、创新点 6、实验过程 7、实验结果 1、评价绩效 2、检测评价 3、跟踪评价 8、 结论 总结 引言 本周阅读了一篇关于高效的任意分割模型的文献&#xff0c;用于自…