最近EOS官网出了文档,说可以跑通一个独立测试的节点了。这周尝试自行搭建了一下,由于自己不完全做mac下的开发,且这玩意是C写的,所以make起来遇到不少坑,记录下来。附完整踩坑、填坑记录。

1. 搭建环境

mac下大家应该都用brew来管理包吧。首先官方说要安装:

  • Boost 1.64
  • OpenSSL
  • LLVM 4.0

通过下面命令,可以尽可能全的安装编译环境:

另外需要安装的下面这个,brew并没有,需要手动安装:

  • secp256k1-zkp (Cryptonomex branch)

步骤如下:

2. 编译LLVM和clang来支持智能合约运行的WASM环境

默认安装的LLVM和clang并不会包含WASM模块,所以需要自行编译,下面是实现仅仅编译LLVM只会生成WASM模块。

3. 获取EOS源码

递归取下来所有的EOS及其模块代码:

如果你没有带--recursive标志,可以运行下面的命令来抓下来需要的模块(这个命令我没有试,使用时,要看是不是需要进到目录内):

4. 使用WASM编译器完整编译EOS源码

需要配置WASM_LLVM_CONFIG环境变量来找到上面构建的WASM的编译器。这个编译器是用来编译eos/contracts下的合约例子,和相应的测试用例的。

上面的cmake ..会遇到一些坑,可参考使用第7节中完整填坑后的cmake脚本。

5. 创建并运行一个测试网节点

进入到编译目录

运行上述命令后会立即报错,按Ctrl C强制中止后,命令运行目录下,会生成默认的./data-dir/目录,目录下有./data-dir/config.ini配置。可以略微看看默认的配置,再启动就好了(这里相当于没有配置,帮你生成了默认配置,所有人都一样,不安全):

如果要支持命令行,在config.ini下,添加下述配置。参见 https://eosio.github.io/eos/group__eosc.html

这样,就可以通过EOS自己的命令行工具eosc来进行交互,如下:

输出效果:

6. 可能遇到的坑

6.1 可能遇到GMP包找不到的报错:

解决办法:

6.2 可能遇到ssl相关的错

但明明已经安装,原因是由于新版mac已经移除了openssl,所以我们需要手动配置环境变量,可以在cmake的命令行中通过-D的方式传入OPENSSL_ROOT_DIROPENSSL_LIBRARIES两个环境变量:

6.3 最后的联接时失败Link failed

第一种,使用brew install llvm后会遇到下面的报错:

解决办法,配置环境变量:

另一种可能,是手动安装llvm遇到下面的报错:

初步怀疑这种是因为在第2节中,使用的是默认的llvm编译了,但却后续又使用手动安装的llvm进行后续操作导致的。故统一使用brew管理的llvm

完整的解决过程,参考这里:https://github.com/EOSIO/eos/issues/99

7. 完整的cmake脚本供参考

感谢您的支持

最新文章

  1. 配置文件(App.config文件)
  2. Node.js 命令行程序开发教程
  3. 移动互联网公司如何将BPM流程管理变身移动化?
  4. HTML5 Canvas核心技术图形动画与游戏开发(读书笔记)----第一章,基础知识
  5. spring整合freemarker
  6. 【MySQL】MySQL 5.7+ 版本的初始化
  7. C puzzles详解【26-30题】
  8. [原创]谷歌插件 - YE搜图助手(YeImageFinder)
  9. Pet
  10. uva 657
  11. php学习笔记——基础知识(1)
  12. C# 三层架构之系统的登录验证与添加数据的实现
  13. 201521123070 《JAVA程序设计》第14周学习总结
  14. java关于随机数和方法重构
  15. vscode调试html页面,及配置说明
  16. 非空校验的提示按钮(shiro项目中来的六)
  17. 【转载】论文笔记系列-Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning
  18. python day27--常用模块 time,random,os,序列化
  19. 基于CentOS 搭建 Seafile 专属网盘
  20. HTML坦克大战学习02---坦克动起来

热门文章

  1. windows任务栏IDEA图标变白色快速解决方法
  2. 表table
  3. mysql触发器trigger 实例详解
  4. Python中的迭代器、生成器
  5. 别人的Linux私房菜(19)认识与分析日志文件
  6. C++入门
  7. python 实现rsa 的加密解密存读取(PEM格式证书)【转发】
  8. JavaScript基础视频教程总结(071-080章)
  9. redis_列表对象
  10. 交叉编译ffmpeg(hi3520d)