EOSIO 源码下载指南克隆 eos 仓库与子模块Submodule完整解析【免费下载链接】eosAn open source smart contract platform项目地址: https://gitcode.com/gh_mirrors/eo/eos本篇技术指南以 EOSIOeos 仓库从源码构建的第一步——下载源码为核心系统讲解git clone --recursive克隆方式、子模块更新git submodule update --init --recursive与增量拉取git pull --recurse-submodules的标准操作流程并结合本仓库的.gitmodules配置、构建脚本与 CI 流水线源码深入说明子模块缺失或过期会导致构建失败的根本原因。读完本文你将掌握 EOSIO 源码获取与版本同步的完整命令体系并能独立排查子模块相关的构建前置问题。适用前提本文面向希望从源码构建 EOSIO 的高级开发者。EOSIO 官方文档建议若你是新手或仅需快速部署节点优先安装预编译二进制包而非从源码构建。从源码构建支持的操作系统包括 macOSDarwin以及 Amazon Linux、CentOS、Ubuntu 等主流 Linux 发行版可由 eosio_build.sh 中的系统分发判断逻辑确认。为什么 EOSIO 源码离不开子模块EOSIO 是一个大型 C 工程其源码并非全部位于主仓库中而是通过Git Submodule子模块将大量第三方库与自研基础库挂载到仓库的libraries/等目录下。打开仓库根目录的 .gitmodules 可以确认本仓库共声明了 9 个子模块子模块路径远端仓库在本工程中的角色libraries/softfloateosio/berkeley-softfloat-3软浮点实现供 WASM 合约运行时使用libraries/yubihsmYubico/yubihsm-shellYubiHSM 硬件钱包支持libraries/eos-vmeosio/eos-vmWebAssembly 虚拟机运行时eosio-wasm-spec-testsEOSIO/eosio-wasm-spec-testsWASM 规范测试集libraries/abieosEOSIO/abieosABI 序列化解析库libraries/rocksdbfacebook/rocksdb嵌入式 KV 存储RocksDBlibraries/amqp-cppCopernicaMarketingSoftware/AMQP-CPPAMQP 消息队列客户端libraries/fceosio/fc基础工具库日志、序列化、加密等libraries/chainbaseeosio/chainbase链上状态数据库内存映射数据库libraries/appbaseeosio/appbase插件化应用框架nodeos 等程序的基础从源码结构看这些子模块覆盖了区块链节点程序的底层存储chainbase、rocksdb、智能合约执行引擎eos-vm、softfloat、ABI 编解码abieos以及程序骨架appbase、fc任何一个子模块目录为空或版本不匹配都会导致后续的 CMake 配置或编译阶段失败。因此下载源码与保持子模块同步是构建 EOSIO 的硬性前置条件。第一步规划目录并克隆主仓库官方文档建议先创建一个统一的eosio目录作为所有 EOSIO 相关软件的家园再在其中克隆仓库mkdir -p ~/eosio cd ~/eosio git clone --recursive https://github.com/EOSIO/eos要点说明--recursive等价于--recurse-submodules会在克隆主仓库后立即递归拉取所有子模块一次性完成初始化与检出避免后续手工处理。克隆完成后主仓库位于~/eosio/eos所有后续构建操作如执行构建脚本、手动 cmake都以此为根目录REPO_ROOT。如果你通过镜像或其他方式同步本仓库同样需要在仓库根目录执行子模块初始化见下一节确保 .gitmodules 中声明的 9 个子模块被完整拉取。验证克隆结果进入仓库目录后可以用以下命令检查子模块状态是否正常cd ~/eosio/eos git submodule status --recursive正常状态下每个子模块行的开头是空格而不是-或若某行以-开头表示该子模块尚未初始化以开头表示子模块检出的提交与仓库记录不一致可能指向了错误的提交。第二步未加 --recursive 克隆时的子模块补拉如果克隆时遗漏了--recursive标志例如早期克隆或从压缩包解压子模块目录会处于空壳状态必须在构建前补齐cd ~/eosio/eos git submodule update --init --recursive参数拆解--init根据 .gitmodules 中记录的 URL 初始化尚未注册的子模块等价于执行git submodule init--recursive对子模块内部嵌套的子模块如果有也递归执行同样的操作保证整棵依赖树完整该命令会在.git/config中写入子模块 URL 记录并检出主仓库中锁定的子模块提交。这也是 EOSIO 官方 CI 的标准做法在 .cicd/build-scripts.yml 中流水线构建命令即为git clone ... git checkout -f $BRANCH git submodule update --init --recursive可见该命令贯穿于 EOSIO 官方自动化构建的每个环节。第三步日常开发中的拉取与分支切换EOSIO 子模块的提交指针随主仓库的提交一起被记录。当你在主仓库执行git pull或切换分支后主仓库记录的期望子模块提交可能已经变化此时必须同步更新子模块否则本地代码会处于版本错位的状态。官方文档给出的标准做法如下[git checkout branch] # 可选先切换分支 git pull --recurse-submodulesgit pull --recurse-submodules会执行拉取并在需要时自动更新子模块。如果你更习惯显式控制也可以在拉取后单独执行git pull git submodule update --init --recursive为什么不更新子模块会导致构建失败构建脚本对子模块状态有强制校验。在 scripts/helpers/general.sh 中ensure-submodules-up-to-date函数会执行git submodule status --recursive | grep ^[\-]只要存在任何以或-开头即未初始化或版本不一致的子模块脚本就会输出错误信息并立即退出git submodules are not up to date: Please run the command git submodule update --init --recursive.也就是说eosio_build.sh 在正式安装依赖和编译之前第 139 行调用ensure-submodules-up-to-date会主动拦截子模块不同步的仓库。此外脚本还通过ensure-git-clonegeneral.sh校验仓库必须是通过git clone获得存在.git目录压缩包解压得到的源码目录将无法直接运行构建脚本。这两处校验共同保证了构建环境的一致性。第四步下载完成后的下一步源码与子模块就绪后即可进入构建环节。官方文档推荐的后续步骤为构建 EOSIO 二进制参见 Build EOSIO Binaries在~/eosio/eos下执行./scripts/eosio_build.sh脚本会自动安装依赖并编译构建产物位于eos/build/programs安装二进制构建成功后强烈建议执行安装脚本将二进制复制到/usr/local/bin等统一位置使本地开发更友好测试与卸载可用make test验证功能需要时通过eosio_uninstall.sh卸载。整个从源码构建的流程概览下载 → 构建 → 安装 → 测试 → 卸载可参考源码构建入口文档其中也再次提示新手优先使用预编译二进制。常见问题速查现象原因解决办法git submodule status出现-前缀行子模块未初始化git submodule update --init --recursivegit submodule status出现前缀行子模块检出提交与主仓库记录不一致重新执行git submodule update --init --recursive构建脚本报 git submodules are not up to date切换分支/拉取后未同步子模块按报错提示先补拉子模块再构建构建脚本报 only works with sources cloned from git源码来自压缩包而非git clone改用git clone获取带.git的完整仓库克隆很慢或子模块拉取失败网络原因导致某个子模块远端不可达重试git submodule update --init --recursive或先git submodule init再逐个子模块 update小结EOSIO 从源码构建的第一步——源码下载绝非简单的git clone了事其关键在于子模块体系的完整性与同步性克隆时使用git clone --recursive、遗漏时补跑git submodule update --init --recursive、拉取与切分支后通过git pull --recurse-submodules保持同步。这些操作受 .gitmodules 中的 9 个子模块声明约束并被 eosio_build.sh 及其辅助函数 general.sh 强制校验。确保子模块状态干净是后续依赖安装与编译顺利进行的先决条件。【免费下载链接】eosAn open source smart contract platform项目地址: https://gitcode.com/gh_mirrors/eo/eos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
OSPF多区域网络设计:VLSM子网划分与ABR路由实践 简介:本资源是一份面向计算机网络专业本科生的课程设计实践报告,聚焦OSPF动态路由协议在多局域网互连中的工程应用,帮助学习者系统掌握子网划分、OSPF原理、拓扑设计及Cisco设备配置等核心技能。压缩包为1个1.16MB的Word文档(.doc… · 2026/9/23 16:15:02
HCIA-Datacom英语题库:能力校准与实验闭环指南 简介:本资源是华为HCIA-Datacom认证(H12-811)英语版官方题库PDF,专为备考该国际认证的网络工程师及高校通信/网络专业学生设计,聚焦英文环境下的协议理解、设备配置与故障分析能力提升。文件共1个PDF文档,大… · 2026/9/23 16:15:02
DeepSeek生成JSON转MIDI:AI作曲数据清洗与Python落地全流程 简介:面向AI音乐创作者与有一定编程基础的技术开发者,这份PDF围绕“DeepSeekMIDI”提供了一套从零生成原创音乐的完整实战方案。文档共26页,先梳理AI作曲背景与DeepSeek能力特点,再深入讲解MIDI文件头、轨道、事件结构及解析方法&… · 2026/9/23 16:15:02
5分钟一文搞懂网页框架:别再被官方文档绕晕 5分钟一文搞懂网页框架:别再被官方文档绕晕 官方文档太长抓不住重点,这是很多开发者的噩梦。你点开 React 或 Vue 的官方指南,准备花两小时搞懂核心逻辑,结果看完目录发现还是云里雾里。别急,今天咱们不背概念,直接上手。 我想用… · 2026/9/23 16:53:35
2026最新blzy配置避坑指南:3步搞定环境不卡壳 2026最新blzy配置避坑指南:3步搞定环境不卡壳 配置环境就卡半天,这种痛谁懂?明明照着教程敲命令,结果报错一堆,重启电脑也没用。别急,今天这篇2026最新的blzy实战笔记,就是为了解决你这种“一看就会,一做就废”的尴尬。很多兄弟觉得… · 2026/9/23 16:53:16
电气检测面试从入门到精通:3个高频坑点拆解 电气检测面试从入门到精通:3个高频坑点拆解 版本升级后 API 全变了,文档还是旧版的,代码跑起来全是报错。这种绝望感,很多刚接触电气检测领域的工程师都经历过。想从入门到精通,光靠死磕文档远远不够,还得懂面试官到底在问什么。今天咱们不整虚的… · 2026/9/23 16:53:10
男生和女生在一起差差差很痛的软件避坑指南含完整示例 男生和女生在一起差差差很痛的软件避坑指南含完整示例 上周陪一个刚入职的运维兄弟改简历,他问我:“哥,为啥面试官一问我怎么排查线上接口超时,我就卡壳?明明平时都能跑通啊。”… · 2026/9/23 16:53:03
计算机组成原理实验全攻略:存储器、组间串行进位与调试实战 简介:这是一份高校计算机组成原理课程的实验教程(PDF),主要面向计算机类专业本科生,以及需要动手做运算器实验的初学者,用来掌握运算器的内部结构与工作原理。整个资源包只有1个PDF文件,大小约1… · 2026/9/23 16:53:03
基于砖码原理的高精度正弦信号源:0.01V步进实现与嵌入式控制 简介:一份聚焦高精度正弦信号源设计的论文资料,适合从事信号检测、嵌入式测量系统及模拟激励单元开发的工程师参考。论文以某型飞机发动机参数检测系统的振动校准为背景,提出利用“砖码”组合原理,通过MAX038芯片、定制千分之一精… · 2026/9/23 16:53:03
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29