经过几天的摸索,在重试编译了很多次之后,终于得出了一个结论:如果想测试 EOS 请使用 ubuntu 系统,非常方便。下面将近期的摸索的过程跟大家分享一下。
在 ubuntu 上编译
这里重点讲一下在 ubuntu 上编译 EOS。经过我数次实验,发现目前 EOS 官方推荐的 ubuntu 16.10版本已经不适合再做测试环境了,因为该版本官方已不再支持。之后我验证过 ubuntu 17.10和 ubuntu 16.04版本均可以在不做任何配置的情况下编译成功,并成功运行。(注意:以上操作系统均选用64位)
编译步骤
- 准备一个ubuntu系统,我尝试使用过虚拟机自己安装,也使用过阿里云的服务器均可以编译。
- 下载EOS代码
git clone https://github.com/EOSIO/eos.git -b DAWN-2018-02-14 --recursive
该指令有两个地方需要重点关注一下,首先是下载的版本应该是DAWN-2018-02-14版本,否则连接上测试网络后无法完全同步区块;另一个要注意的地方是要加入--recursive参数,否则EOS关联的子项目没法下载。如果命令没有加入参数,可以使用下面的命令来更新子项目
git submodule update --init --recursive
- 自动编译
cd eos
./build.sh ubuntu full
然后就是漫长的等待了,具体等待时间跟你的cpu配置和网络带宽强相关,。这里注意一下编译命令后面有个full参数,该参数是一个可选参数可以有 full 和 build 两个选项,full用于第一次编译或完全重新编译,它会重新尝试编译安装依赖项,build是仅编译EOS代码,在变更代码后可以使用以下命令重新编译
./build.sh ubuntu build
在MacOS上编译
先说结论,我经过几次的编译,我个人建议不要在MacOS测试编译EOS,如果需要编译就一定要遵循官方的推荐的MacOS 10.12版本,不要使用10.13版本。如果已经升级为最新版本,那么在编译时需要注意boost库的版本,不能高于1.65。这个在编译时不会提示,因为Mac下的包管理工具brew不支持特定版本的包下载。可以使用该地址https://homebrew.bintray.com/bottles/boost-1.65.1.high_sierra.bottle.tar.gz将boost1.65下载到本地,然后手工解压并复制到/usr/local/Cellar/boost。编译使用以下命令:
./build.sh darwin full
最后一步
需要进入build目录然后执行以下命令:
cd build
make install
该命令会将编译好的可执行文件、头文件、库文件和模板文件安装到build下的install目录下,在该目录的bin下有所有编译好的命令,包括eosd、eosc、eoscpp等等。
EOS打赏地址0x078C5AF6C8Ab533b8ef7FAb822B5B5f70A9d1c35
网友评论
等来的却是如下结果,想玩下EOS,真是坎坷
----
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/ip-559818.cpp
clang: note: diagnostic msg: /tmp/ip-559818.sh
clang: note: diagnostic msg:
********************
libraries/fc/CMakeFiles/fc.dir/build.make:1118: recipe for target 'libraries/fc/CMakeFiles/fc.dir/src/network/ip.cpp.o' failed
make[2]: *** [libraries/fc/CMakeFiles/fc.dir/src/network/ip.cpp.o] Error 254
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:130: recipe for target 'libraries/fc/CMakeFiles/fc.dir/all' failed
make[1]: *** [libraries/fc/CMakeFiles/fc.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
这次直接编辑不过,感觉坑是好多。哪里又不对呢,我是新装的ubuntu,但瞎装了一堆软件了
---
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -m64 -fno-strict-aliasing -ftemplate-depth-1024 -fvisibility=hidden -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_STATIC_LINK=1 -DBOOST_CHRONO_STATIC_LINK=1 -DBOOST_FILESYSTEM_STATIC_LINK=1 -DBOOST_HAS_ICU=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_HAS_PTHREAD_MUTEX_ROBUST -DBOOST_LOG_USE_AVX2 -DBOOST_LOG_USE_NATIVE_SYSLOG -DBOOST_LOG_USE_SSSE3 -DBOOST_LOG_WITHOUT_DEBUG_OUTPUT -DBOOST_LOG_WITHOUT_EVENT_LOG -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_LIB=1 -DDATE_TIME_INLINE -DNDEBUG -D_XOPEN_SOURCE=600 -D__STDC_CONSTANT_MACROS -I"." -I"libs/log/src" -c -o "bin.v2/libs/log/build/gcc-5.4.0/release/link-static/threading-multi/named_scope_format_parser.o" "libs/log/src/named_scope_format_parser.cpp"
...failed gcc.compile.c++ bin.v2/libs/log/build/gcc-5.4.0/release/link-static/threading-multi/named_scope_format_parser.o...
packet_write_wait: Connection to 119.29.75.31 port 22: Broken pipe