Spike RISC-V 模拟器安装指南:三步完成编译与首次运行验证

Spike RISC-V 模拟器安装指南:三步完成编译与首次运行验证

【免费下载链接】riscv-isa-simSpike, a RISC-V ISA Simulator项目地址: https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim

Spike 是一款 RISC-V 指令集模拟器,它以功能模型的方式逐条模拟一个或多个 RISC-V 处理器核(hart)的指令行为,覆盖 RV32/RV64 基础指令集及 M、A、F、D、C、V 等常用扩展。本文以 Linux 主机为例,带你走通 Spike 的依赖准备、源码编译安装和最小化运行验证,并整理一份按“现象—原因—处理”组织的卡点清单。按文中的命令顺序操作,大约 15~30 分钟内可以完成从克隆仓库到跑通示例程序的全过程。

安装前准备

动手前先对照下表核对环境。表格中的要求均来自仓库自带的configure检查逻辑(见 configure.ac),缺哪一项就补哪一项,不用全部预装。

检查项要求说明
主机系统Linux(64 位)向量扩展(V)明确要求 64 位主机
编译器GCC 或 Clang(支持 C++)configure会自动探测CC/CXX
构建工具GNU Make、Autoconf 工具链仓库已内置生成好的configure脚本
系统依赖dtc(device-tree-compiler)必需项,缺失时configure直接报错退出
可选依赖Boost(regex、system、asio)仅在使用套接字命令交互调试时需要
磁盘空间500 MB 以上源码与编译产物占用
网络可访问代码仓库用于git clone与依赖包安装
RISC-V 工具链riscv64-unknown-elf-gcc与riscv-pk用于编译并运行验证程序,见后文

在 Debian/Ubuntu 系统上,依赖安装命令如下(第二行可按需跳过):

sudo apt-get install device-tree-compiler sudo apt-get install libboost-regex-dev libboost-system-dev

使用yum系发行版时,可用yum install dtc替代第一条命令。

源码获取与编译

将RISCV环境变量设为工具链安装目录,仓库文档默认使用这一约定:

git clone https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim cd riscv-isa-sim export RISCV=/opt/riscv

Spike 采用外部构建目录,避免把编译产物混入源码树:

mkdir -p build && cd build ../configure --prefix=$RISCV make sudo make install

构建成功后,$RISCV/bin下会生成spike主程序和spike-dasm反汇编工具。如果不想使用sudo,可以把--prefix指向用户目录(例如~/riscv),后续再把$prefix/bin加入PATH:

export PATH=$PATH:$RISCV/bin

首次运行验证

先做一次不依赖工具链的冒烟检查。构建目录下的可执行文件可以直接查看版本横幅:

./build/spike --help

输出首行应显示Spike RISC-V ISA Simulator及版本号,说明核心构建成功。

完整的端到端验证需要一个能编译出 RISC-V ELF 的工具链(riscv-gnu-toolchain)和代理内核riscv-pk。示例程序保持最小化:

#include <stdio.h> int main(void) { printf("hello from spike\n"); return 0; }

编译并交由 Spike 模拟执行:

riscv64-unknown-elf-gcc -o hello hello.c spike pk hello

✅ 终端中打印出hello from spike后,即可确认 Spike RISC-V 模拟器的安装、配置与 ELF 加载链路全部可用。

常见报错定位

遇到卡点时,按下表对照处理,大多数问题出在依赖和权限两类环节。

现象可能原因处理
configure报device-tree-compiler not found缺少dtc安装device-tree-compiler包后重新configure
编译到链接阶段报 Boost 头文件缺失未安装 Boost 开发包安装libboost-regex-dev、libboost-system-dev;不用套接字调试则可不装
make install提示权限不足prefix指向了系统目录改用sudo make install,或把prefix改到用户目录
运行时报Permission deniedELF 文件无可执行权限chmod +x hello后重试
提示找不到pk或spikeriscv-pk未安装或PATH未包含安装目录先安装 riscv-pk,再检查export PATH是否生效
向量指令行为与预期不符主机非 64 位,或未启用 V 扩展V 扩展要求 64 位主机,必要时用--isa指定 ISA 字符串
想核对某条指令是否被模拟该指令不在当前构建中查阅 ChangeLog.md 中各版本支持的扩展清单

进阶方向

验证通过后,可以按需求选择以下方向深入,此处只做索引,不展开细节。

  • 交互式调试:加-d参数进入调试模式(spike -d pk hello),可用: reg 0 a0查看整数寄存器、: mem 2020查看物理内存、回车单步执行。
  • 执行日志:-l生成执行日志,配合--log=<name>指定日志文件名。
  • 内存与核数配置:-m<n>设定目标内存(MiB),-p<n>设定模拟的处理器核数量,--priv控制可用特权级。
  • 自定义指令扩展:在riscv/insns/下按现有指令的写法描述新指令功能,在riscv/opcodes.h登记操作码,再把它加入riscv/riscv.mk.in参与构建;RoCC 方式则通过--extension与--extlib挂载动态库,参考 customext/ 目录中的示例。

资料入口

  • 官方说明:README.md(构建步骤、调试用法均以它为准)
  • 版本变更记录:ChangeLog.md
  • 指令实现参考目录:riscv/insns/
  • 测试样例:ci-tests/

下一步建议:先用-l参数重新跑一遍spike pk hello,观察指令级日志格式;随后尝试-p 2双核运行,熟悉多 hart 场景下的输出差异。

【免费下载链接】riscv-isa-simSpike, a RISC-V ISA Simulator项目地址: https://gitcode.com/GitHub_Trending/ri/riscv-isa-sim

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

PySR项目中关于JuliaCall错误的技术分析与解决方案

PySR项目中关于JuliaCall错误的技术分析与解决方案

PySR项目中关于JuliaCall错误的技术分析与解决方案 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 引言&#xff1a;当高性能符号回归遭遇JuliaCall困境 你是否曾经满怀期待地安装PySR&#xff…

2026/10/20 1:20:54 阅读更多 →
千页文档逐页喂给大模型,这个“最贵“的设计真的划算吗?PageIndex 性能账本拆解

千页文档逐页喂给大模型,这个“最贵“的设计真的划算吗?PageIndex 性能账本拆解

千页文档逐页喂给大模型&#xff0c;这个"最贵"的设计真的划算吗&#xff1f;PageIndex 性能账本拆解 【免费下载链接】PageIndex &#x1f4d1; PageIndex: Document Index for Vectorless, Reasoning-based RAG 项目地址: https://gitcode.com/GitHub_Trending/p…

2026/10/20 1:19:53 阅读更多 →
YOLOv5单目测距原理与工程实践:从像素框到真实距离

YOLOv5单目测距原理与工程实践:从像素框到真实距离

简介&#xff1a;本资源是基于YOLOv5与单目视觉融合的三维距离估计完整实现方案&#xff0c;面向计算机视觉初学者、智能驾驶/机器人方向开发者及高校课程实践者&#xff0c;解决无深度传感器条件下实时目标检测与距离估算的核心问题。压缩包共132个文件&#xff0c;含34个Pyth…

2026/10/20 1:19:53 阅读更多 →

最新新闻

Unity代码热更新实战:ILRuntime集成Addressable的完整方案与避坑指南

Unity代码热更新实战:ILRuntime集成Addressable的完整方案与避坑指南

做Unity客户端这些年&#xff0c;只要是做手游的&#xff0c;基本绕不开热更新这个话题。资源热更还好说&#xff0c;AssetBundle或者Addressable都能解决&#xff0c;真正麻烦的是代码热更。以前用Lua&#xff0c;好是好&#xff0c;但团队要养Lua程序员&#xff0c;C#的代码也…

2026/10/20 2:00:13 阅读更多 →
MapReduce核心原理解析:从分而治之到Shuffle与优化实践

MapReduce核心原理解析:从分而治之到Shuffle与优化实践

1. 为什么先要有MapReduce&#xff1a;单机跑不动的那一刻我最早接触MapReduce是在某培训机构的课程笔记里&#xff08;也就是标题里这个"学习历程"系列&#xff09;&#xff0c;前几章还在讲HDFS&#xff0c;讲数据怎么分块存储、怎么备份。当时我的感觉是&#xff…

2026/10/20 2:00:13 阅读更多 →
排队论与Anylogic仿真:车站进站拥堵优化实践

排队论与Anylogic仿真:车站进站拥堵优化实践

简介&#xff1a;一份基于排队论与Anylogic仿真研究车站进站排队优化的学术PDF文档&#xff0c;面向铁路运营管理、车站规划设计及客流管理相关从业者与研究人员&#xff0c;也适合交通工程、运筹学方向学生作为案例参考。文档针对实名制售票下旅客进站排队过长、体验不佳的问题…

2026/10/20 2:00:13 阅读更多 →
轻量级数据抓取与清洗:用Python和规则配置打造自动化处理工具

轻量级数据抓取与清洗:用Python和规则配置打造自动化处理工具

1. 为什么会做"rea"这个项目"rea"这个名字从一开始就不是什么复杂的单词缩写&#xff0c;它只是我手上这个小工具的一个代号。当时我维护着一个内容站点&#xff0c;每天需要从几个固定的数据源抓取素材&#xff0c;经过人工筛选、格式整理之后再发布到后台…

2026/10/20 2:00:13 阅读更多 →
ANSYS弹塑性分析实战:从弹性到塑性收敛调试

ANSYS弹塑性分析实战:从弹性到塑性收敛调试

简介&#xff1a;《2021年ANSYS弹性及塑性分析非常经典.docx》是一份面向ANSYS初、中级用户及机械、土木、航天等工程领域从业者的中文教程资料&#xff0c;聚焦弹性与塑性非线性分析的核心原理和软件操作方法&#xff0c;帮助读者理解材料屈服、塑性变形和ANSYS塑性选项的实际…

2026/10/20 2:00:13 阅读更多 →
HyperDbg:Windows Ring0级内核调试代理原理与实践

HyperDbg:Windows Ring0级内核调试代理原理与实践

简介&#xff1a;本资源为开源Ring0级内核调试器Hyperdbg的完整源码工程&#xff0c;面向Windows驱动开发者、系统安全研究员及操作系统学习者&#xff0c;用于深入理解与实践内核层调试技术&#xff0c;解决驱动开发调试、恶意代码行为分析、系统稳定性优化等高阶问题。压缩包…

2026/10/20 1:59:13 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →