Solana编译失败探讨(OpenEuler RISC-V版)

news/2025/4/2 19:09:43/文章来源:https://www.cnblogs.com/ChebyshevTST/p/18800115

  Solana 是 2017 年由 Anatoly Yakovenko 创立的开源项目,旨在打造高性能、去中心化且低成本的区块链平台2。它采用独特的 Proof of History(PoH)共识机制,结合 Tower BFT 等技术,实现了每秒数千笔交易的高吞吐量,确认时间仅 400 毫秒,每笔交易中位数费用为 0.00064 SOL12。Solana 支持链上程序开发,开发者可用 Rust 等语言编写智能合约,基于 eBPF 虚拟机高效运行1。其生态发展迅速,在 DeFi、NFT、GameFi 等领域扩张迅猛,凭借高性能和低费用吸引了大量开发者和用户,是市值第三的公链,对以太坊等传统公链构成有力挑战。

  结合手头的工作,我做一次在OpenEuler 24.09 RISC-V上部署Solana的实战,并且调研失败的原因。

  此处跳过Rustup以及Cargo、Rustc的下载,直接先从官网克隆Solana的项目下来。

cd solana
./cargo build

  cargo用的是Solana官方提供的,不过出现了以下错误

  我查了一下ring,它是一个加密算法库,主要用Rust实现,不过里面还有不少汇编代码,到这里的时候,我是初步怀疑没有提供RISC-V的汇编导致 build 失败,看了一下还真是。

  有很大篇幅都是用 Assembly 写的,再随便挑了一个源码看看

  就比如这个函数,很显然在OpenEuler RISC-V上,这几个预编译条件都不满足,好在这是 void 类型的函数,最后这个函数变成了空函数。不过有意思的是,cargo build 很顺利,并没有失败。

  cargo build 是顺利的,不过到了这里有一个 build-script,是一个可执行文件,我尝试运行了一下,出现了似曾相识的错误。

  和文章开头的那图一样,也是 thread "main" panic,因此又可以找到一个可以移植的软件包了,那就是 ring,因为这个,我在部署 Solana 的时候受挫,同时我也看了看 build.rs,这大概是它支持的几种架构。

  看起来只支持常见的 x86,arm和wasm。不过这只是我在部署 Solana 遇到的第一个难点,假设 ring 移植成功了,后面可能还会遇到其它同样因为 RISC-V 而失败的包,本来 ring 已经够庞大了,因此移植 Solana 看起来似乎是一个工作量非常大的任务。

  记录下来,如果有一天这些包成功移植完成了,再回头看看是否可以移植 Solana。

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

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

相关文章

windows将ollama及模型安装到D盘或其他盘符

Ollama官网 在ollama安装包存放的文件路径输入 cmd 回车自动打开命令窗口 在命令行输入一下内容: 软件包名称 /DIR=指定目录OllamaSetup.exe /DIR=E:\software\Ollama 弹出安装程序,直接Install ---------------------------------------------------------------------…

【DIY】通达信DIY添加扫雷宝、地图和复盘(1)

【写在前面】炒股软件有很多,电脑版我用的多的通达信,手机版用的多的是同花顺。之前还有一些其它的软件,比如A股通、短线王、wind股票、雪球等都有自己的特色。自己不喜欢一次装好多软件,所以就产生了聚合的念头。通达信通赢版可以登录多券商账号,懒得来回切换,所以选择以…

RabbitMQ进阶--TTL,死信队列,持久化,磁盘监控

一.消息的TTL机制 RabbitMQ中的TTL(Time-To-Live,存活时间)是指消息或队列的过期时间。TTL机制允许你指定消息在未被消费前可以存活的时间长度,超过这个时间后,消息将被视为“死亡”,并从队列中移除。这种机制对于控制消息的有效性和资源管理非常有用。 防止积压消息:当…

day41 基础的模块

基础模块 ad-hoc命令模式pingcommandshellcopyfilescriptcrongroupuser1.先看资料,看模块的语法 - 官网,看实例用法,语法注解 - ansible-doc -s 模块名 - 你自己的学习笔记2.每一个模块独有的参数语法,都是 ad-hoc命令模式ansible 主机组 -m 模块名 -a "模块独有的…

Java面试基础

一、Java基础语法 1.1 环境搭建与开发 1、JDK、JRE、JVM的关系和区别?(高频plus)JDK:Java Development Kit,Java开发工具包,包含了JRE和一系列Java开发工具。 JRE:Java Runtime Environment,Java程序的运行环境,包含JVM、Java核心类库等。JRE只能用来运行Java应用程序…

day41 Ansible剧本的语法

day41--ansible剧本的学习 1.剧本的主题的内容剧本就是两大部分的知识点 -ansible 模块(以及模块的参数) -yaml语法3.工作以后 维护公司的剧本 -看剧本,看懂了,维护,修改 -修改各种的参数,文件的路径,文件的名字,服务的端口名字(就是该ansible各种的参数,参数的值)2。…

Windows系统迁移用户目录

Windows系统随着使用时间的延长,系统盘空间占用会越来越大,对于一些硬盘空间有限的主机而言,C盘空间剩余就越来越少,稍不注意可以可能就被占满了,导致系统都无法启动。正好我自己的笔记本电脑也遇到了同样的问题,因此就想把C:\Users目录迁移到其他分区中。 在实践中,使用…

iphone---苹果手机传输文件

使用手机,拍了一些照片和剪辑了一些视频,但是总感觉将手机里面的图片及视频传到电脑里面和麻烦,今天试了一下用U盘传,效率还可以,但是其中也遇到了一些问题,就在这里记录下: 传输方法:插入U盘,选择图片或文件,点击【分享】选择【存储到“文件”】点击【左上角浏览】…

Python+硅基流动API实现小说转有声读物

一、注册硅基流动账号获取文本转语音api 1.注册登录硅基流动注册、登录硅基流动查看apikey查看赠送的免费额度点击文档中心2.查看文本转语音api查看文本转语音api查看api使用指南查看文本转语音api的python调用方法二、python实现文本转语音功能 1.python调用api实现文本转语音…

蓝绿部署深度解析:从理论到实践的全方位学习指南

一、蓝绿部署的基本概念 (一)定义 蓝绿部署是一种软件发布策略,通过设置两个相同的环境(“蓝色”和“绿色”),最大限度地减少停机并降低与部署新版本应用程序相关的风险。 (二)工作原理 蓝绿部署的核心思想是将应用程序的部署过程分为两个阶段:测试阶段和生产阶段。在…

Elasticsearch 高级

Elasticsearch 高级建议阅读顺序:Elasticsearch 入门 Elasticsearch 搜索 Elasticsearch 搜索高级 Elasticsearch高级(本文)1. nested 类型 1.1 介绍 Elasticsearch 中的 nested 类型允许你在文档内存储复杂的数据结构,比如一个用户可能有多个地址,或者一个博客文章可能有…

mysql日志写马

mysql日志写马 条件 1.全局变量general_log为ON。 mysql有两个全局变量:general_log指的是日志保存状态,值为ON/OFF,general_log_file指的是日志的保存路径。 只有当general_log为ON时,日志才会被记录进去,所以我们要先打开这个全局变量,使用命令查看全局变量状态‘ show…