區塊鏈
挖礦,比特幣,EOS,以太坊

EOS開發教程,全面理解EOS——1.源碼編譯及運行

隨著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數據等等。

——————— 本文來自 w7849516230 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/w7849516230/article/details/80781173?utm_source=copy

贊(0)

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
p3试机号99