编译源码 运行代码 在阿里云 纽约服务器上运行没有出现任何问题。

在其他电脑上出现很多问题。

搜集到的问题如下:

随着EOSIO软件越来越成熟,后来的开发者也越来越幸福。EOS相关源码的编译和运行变得异常简单。而且官方提供了开发者文档EOSIO Developer Portal

,能够帮助更好的理解和使用。不过文档全面而细节不足,也缺少一些问题情况的处理。知易行难,上手试试吧。

环境说明

本文测试过的编译环境:

Ubuntu 16.04 LTS

Ubuntu 16.04.4 LTS

macOS High Sierra(10.13.3)

源码下载

本文撰写时,最新的release为v1.0.6

(1)下载代码

git clone https://github.com/EOSIO/eos --recursive

1

如果忘记使用“–recursive”,可在克隆下的eos目录中执行

git submodule update --init --recursive

1

(2)切换到v1.0.6

git checkout v1.0.6

1

编译

在eos目录中,执行eosio_build.sh。

如果有好的科学上网工具请提前配置好,执行下面的命令后,会检查系统环境,下载所依赖的软件工具。如有问题可看后面的问题汇总与处理。

cd eos

./eosio_build.sh

1

2

比较顺利的话,会看到如下的提示:

使用Ubuntu比较顺利,就是下载和编译耗时,基本没有啥问题。

启动节点

如果仅想搭建本地的单节点测试网,进入eos的build目录,执行sudo make install。像我这样自己同步主网、测试网,外加自己单节点测试的,暂时先不执行install了,避免混乱,而是在build各个目录里面执行。

这里先说明单节点测试情况

cd build/programs/nodeos

./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

1

2

看到如下信息说明已经开始生产块了

查看网络信息

既然已经开始生产块了,那另起一个shell终端,执行cleos查看当前网络信息

cd build/programs/cleos

./cleos get info

1

2

看到如下网络信息:

{

"server_version": "79651199",

"chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",

"head_block_num": 20,

"last_irreversible_block_num": 19,

"last_irreversible_block_id": "000000138960dec18c0daf35042fc8a180e884241cd5827335206a441992fa86",

"head_block_id": "00000014ef94b3c0b066454bec196c8c4f1ac4115c8c9cd43294fc0e2ea596cd",

"head_block_time": "2018-06-22T23:57:02.000",

"head_block_producer": "eosio",

"virtual_block_cpu_limit": 203830,

"virtual_block_net_limit": 1068689,

"block_cpu_limit": 199900,

"block_net_limit": 1048576

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

好了,可以开始你的各种测试了,测试命令参考官网cleos reference

生成的块和配置信息默认在如下目录:

Mac OS: ~/Library/Application Support/eosio/nodeos/

Linux: ~/.local/share/eosio/nodeos/

简单理解下单节点网络

借用官网图:

eos的build目录里生成的可执行程序很多,常用到的:

nodeos :通过配置不同插件,启动节点,同步EOS网络数据或者自己生成块,也可作为API节点供调用

keosd:管理钱包,钱包中包含EOS公私钥对信息

cleos:命令行交互接口,连接钱包与EOS网络,执行查看网络信息,推送交易信息,部署智能合约等

eosiocpp:编译智能合约,生成wasm文件及abi文件

各种问题

在阿里云服务器的Ubuntu上编译最顺利,几乎没有遇到任何问题;Mac OS上问题多些。编译时会下载需要的文件,如果中断,按照提示删除未完成的目录重新编译即可。其他问题列举如下:

1.内存空间不足

遇到Your system must have 7 or more Gigabytes of physical memory installed

执行eosio_build.sh时,会检查系统内存至少7G,修改script下对应系统的脚本即可。scripts/eosio_build_ubuntu.sh的diff如下:

  •   if [ "${MEM_MEG}" -lt 7000 ]; then
  •   if [ "${MEM_MEG}" -lt 3000 ]; then
    printf "\\tYour system must have 7 or more Gigabytes of physical memory installed.\\n"
    printf "\\tExiting now.\\n"
    exit 1

1

2

3

4

5

下面是Mac OS上的问题

2.无法找到已安装的llvm路径

CMake Error at libraries/wasm-jit/Source/Runtime/CMakeLists.txt:26 (find_package):

Could not find a package configuration file provided by "LLVM" (requested

version 4.0) with any of the following names:

1

2

3

参考https://github.com/EOSIO/eos/issues/43

根据提示找到llvm 4.0的路径,可利用tab在此路径下查找

ll /usr/local/Cellar/llvm/4.

然后通过export到环境变量中

export LLVM_DIR=/usr/local/Cellar/llvm/4.0.0_1/lib/cmake

3.Failed to find Gettext libintl

CMake Error at /Applications/CMake.app/Contents/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:137 (message):

Failed to find Gettext libintl (missing: Intl_INCLUDE_DIR)

Call Stack (most recent call first):

/Applications/CMake.app/Contents/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)

/Applications/CMake.app/Contents/share/cmake-3.11/Modules/FindIntl.cmake:47 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)

programs/cleos/CMakeLists.txt:29 (find_package)

1

2

3

4

5

6

参考https://github.com/EOSIO/eos/issues/2174

执行brew link gettext –force

顺便补充万一测试个hello world的智能合约,发现编译有问题

4.无法找到依赖的头文件及库

hello.cpp:1:10: fatal error: 'eosiolib/eosio.hpp' file not found

include <eosiolib/eosio.hpp>

     ^~~~~~~~~~~~~~~~~~~~

1 error generated.

1

2

3

4

简单的是在eos源码下编译后的build目录中,执行sudo make install后即可。

后续再写如何连接EOS主网,JungleTestnet测试网络及如何配置节点等信息,比如genesis.json,block数据等等。

eos源码编译的更多相关文章

  1. 1.EOS源码编译运行

    目前网络上都是针对老版EOS2.0源码编译的文章,我在mac上参考这些文章编译,最后发现根本就不对,最新版本只需一条命令(./eosio_build.sh,依赖库会自动安装的)即可.我根据这些文章手动 ...

  2. Android 5.0源码编译问题

    如果是自己通过repo和git直接从google官网上download的源码,请忽略这个问题,但是由于google在国内被限制登录,通过这一种方法不是每个人都能download下来源码,通常的做法就是 ...

  3. Android stdio Apktool源码编译

    Android Apktool源码编译 标签(空格分隔): Android Apktool 源码编译 需求 习惯NetBeans调试smali需要用Apktool反编译apk,需要用-d的参数才能生成 ...

  4. SSH/SSL 源码编译安装简易操作说明

    环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...

  5. Hadoop源码编译过程

    一.           为什么要编译Hadoop源码 Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通 ...

  6. World Wind .NET源码编译问题处理

    World  Wind  .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...

  7. 源码编译安装 MySQL 5.5.x 实践

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  8. Linux 安装node.js ---- 源码编译的方式

    一 : 普通用户: 安装前准备环境: 1.检查Linux 版本 命令: cat /etc/redhat-release 2.检查 gcc.gcc-c++ 是否安装过 命令: rpm -q gcc rp ...

  9. 烂泥:mysql5.5数据库cmake源码编译安装

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开 ...

随机推荐

  1. Day18 (二)反射

    反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java ...

  2. C# 通过word模板动态生成Word

    object oMissing = System.Reflection.Missing.Value; Word._Application oWord = new Word.Application(); ...

  3. mysql太多连接问题及解决方案

    不管是JavaEE开发还是其他,只要是Linux系统下安装的mysql,通常默认最大连接为270. 如果你的客户端连接超过这个数,通常要么是配置文件修改,或者是命令行修改,配置文件修改和命令行修改的区 ...

  4. oracle ORA-01722:无效数字 记录

    今天在对12万条记录的表进行左联接时,有时可以查询出数据,有时会报无效数字,反复检查,发现问题. 例如sql: SELECT * FROM USER U LEFT JOIN USER_ROLE UR ...

  5. centos 系统安装基本步骤,面试必考

    1.调整开机媒体,通常为cd或者dvd,也可以是u盘. 2.选择安装模式,是否需要图形化 3.语系及键盘语系选择 4.软件选择 5.磁盘分区操作,主+扩展分区最多4个.逻辑分区在扩展分区下建立 6.时 ...

  6. HDU1753 (大正小数相加)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1753 大明A+B Time Limit: 3000/1000 MS (Java/Others)    ...

  7. httpclient,java跨系统调用,第三接口调用实例

    java跨系统调用,第三方接口调用,有三种方式 1:rmi/rpc 传序列化对象 2:webservice 传xml 3:restful 传json 接下来给大家演示怎么用httpclient调用re ...

  8. Activity Monitor 闪退 & 无法进入睡眠

    情况描述 黑苹果主机突然无法进入睡眠. 考虑到可能是后台程序阻碍了系统正常进入睡眠, 于是想要通过Activity Monitor查看系统的活动情况,然而,Activity Monitor闪退. 重 ...

  9. 改用固定IP后zabbix无法发送邮件的问题解决

    虚拟机之前一直用随机IP,然后发送邮件也正常. 改成固定IP以后,发送邮件失败. 用mail命令发送邮件成功. 查看zabbix_server的log,显示 cannot connect to SMT ...

  10. 菜鸟成长心酸史之php初遇教程

    phpstorm是我接触到的第二个制作网页的程序,刚拿到php的时候,我是懵逼的,从安装到使用,可以说一点都不会,尤其是它还要配合wampsever使用,即使看视频,不同的制作php的软件也有不同的地 ...