Solana编译失败探讨(OpenEuler RISC-V版)
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。
Solana编译失败探讨(OpenEuler RISC-V版)的更多相关文章
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- sass安装:webpack sass编译失败,node-sass安装失败的终极解决方
文章来源:sass安装:webpack sass编译失败,node-sass安装失败的终极解决方 sass难言之隐-sass安装的坑 之前花了很多时间折腾node-sass,发现sass老是安装不上 ...
- 编译opengl编程指南第八版示例代码通过
最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...
- 因GIT默认忽略.dll文件导致的Visual Studio项目通过Bamboo编译失败
背景 由GIT管理的Visual Studio项目,使用Stash管理远端代码库,通过与Stash集成的Bamboo生成项目并发布 现象 Visual Studio项目本地生成成功,用SourceTr ...
- 格式化代码引发的css编译失败
之前在做feather项目,处理IE8下的问题时,写 filter: progid: DXImageTransform.Microsoft.AlphaImageLoader(src='#', sizi ...
- Maven多模块项目编译失败:程序包xxx不存在
项目结构如下: parent(父类工程) | - - - - - common(通用工具类子工程) | - - - - - projectA(springboot子工程,依赖common工程) pom ...
- redis make编译失败的原因
make clean redis编译失败可能是: 1.未安装gcc,gcc-c++ yum install gcc yum install gcc-c++ 2.未安装tcl yum install t ...
- 一次gcc编译失败分析
1. 场景: 在使用gcc编译时,编译器报错:xxx:'xxx'未定义的引用 2. 排查过程: 首先,我很自然的想到是不是自己使用了未定义的函数或者将函数名称写错了,在检查了一边过后,我发现自己使 ...
- Android studio 编译失败Error:Could not read entry ':app:processDebugManifest' from cache taskArtifacts.b
Android studio 编译失败 Error:Could not read entry ':app:processDebugManifest' from cache taskArtifacts. ...
- WDA编译失败问题
1.放假回来,wda编译失败,报错如下 2018-09-25 10:03:09.020964+0800 WebDriverAgentRunner-Runner[335:33309] +[CATrans ...
随机推荐
- c# Lamda表达式 简化语法例子
看到一个老代码里的方法,是判断两个string 数组是否存在相同的元素: 快一百行代码了..... public bool HasRole(string[] roleList) { bool resu ...
- springboot之结合mybatis增删改查解析
1. 场景描述 本节结合springboot2.springmvc.mybatis.swagger2等,搭建一个完整的增删改查项目,希望通过这个基础项目,能帮忙朋友快速上手springboot2项目. ...
- 【Maven】---操作指南
Maven坐标与依赖 最近想深度学习下maven,找到一本书叫<Maven实战>,这本书讲的确实很好,唯一遗憾的是当时maven教学版本是3.0.0的,而目前已经到了3.5.4了,版本存在 ...
- uniapp横向滚动
scroll-x="true" 出现横向滚动 scroll-with-animation="true" 横向滚动有动画 <scroll-view clas ...
- SqlServer性能检测之Sql语句排查
很多时候,我们在用SQL语句查询数据时,难免会漏掉对SQL语句性能的考虑,所以有时就会造成SqlServer服务占用过高的问题,为了大致排查是哪些SQL语句造成的问题,我们可以通过如下SQL查询出最近 ...
- Project Euler 728 题解
Problem 728 Circle of Coins 得到 Wallbreaker5th 的指导. \(F\) 就是求这些环上区间(记为 \(A\))的异或线性基大小.令 \(A'_i\gets A ...
- mac spark+hive+hadoop 数据分析环境搭建(单机简版)
apache产品下载地址: http://archive.apache.org/dist/ mysql5.6 brew方式安装配置: Icon mysql做为元数据存储使用. brew searc ...
- msfconsole攻击指令
Post后渗透模块 sysinfo #查看目标主机系统信息 run scraper #查看目标主机详细信息 run hashdump #导出密码的哈希 load kiwi #加载 ps #查看目标主机 ...
- DeepSeek R1本地与线上满血版部署:超详细手把手指南
一.DeepSeek R1本地部署 1.下载ollama下载地址 本人是Mac电脑,所以选第一项,下面都是以Mac环境介绍部署,下载好把ollama运行起来即可启动Ollama服务. Ollama默认 ...
- ABB机器人IO板DSQC651维修检查方法
ABB机器人作为工业自动化的重要设备,其稳定性和可靠性对于生产线的持续运行至关重要.然而,在实际使用中,由于各种原因,可能会出现ABB机器人IO板DSQC651故障,影响机器人的正常运行. 一.ABB ...