以太坊连载(八):C++客户端的安装与定制(二)

2016-09-05 11:42 来源:巴比特资讯 阅读:4510
cpp-ethereum 代码库在几个Git库中传播,库在Git上被分组为webthree-umbrella库下的子模块。

以太坊

从源安装客户端

概览

cpp-ethereum 代码库在几个Git库中传播,库在Git上被分组为webthree-umbrella库下的子模块。

我们用一般的CMake编译系统来生成平台特定的架构文件,这意味着工作流程和你用的任何操作系统都非常类似:

  1. 安装编译工具和外部程序包(这些是平台独立的)

  2. 从webthree-umbrella git库克隆源代码

  3. 运行CMake来生成编译文件(makefile,Visual Studio解决方案等)

  4. 编译

特定操作系统安装说明

为Linux创建 注意 —— 通过从源建立和禁用 VMJIT及其他特征,也能够让客户端适用于32位 Ubuntu。我们可能会接受 pull请求来增加这样的支持,但不会投入任何时间来专门开发支持 Ubuntu 32位架构。

Linux有个发行版特定程序包系统步骤的幻灯片,这是我们在开始从源建立之前要做的第一件事。下面的章节试图体现这些步骤。如果你正在使用不同的发行版和hit版本,请告诉我们。

克隆资源库 要克隆源代码,请执行以下指令:

git clone —recursive https://github.com/ethereum/webthree-umbrella.git

安装依赖(发行版特定)

为Ubuntu安装依赖

Ubuntu Trusty Tahr (14.04) 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo apt-add-repository ppa:george-edison55/cmake-3.x
sudo apt-get -y update
sudo apt-get -y install language-pack-en-base
sudo dpkg-reconfigure locales
sudo apt-get -y install software-properties-common
sudo add-apt-repository "deb http://llvm.org/apt/trusty/ llvm-toolchain-trusty-3.7 main"
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get -y update
sudo apt-get -y install llvm-3.7-dev
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev \
libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \
libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev \
libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers \
libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev
sudo apt-get -y install libjson-rpc-cpp-dev
sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine

Ubuntu Utopic Unicorn (14.10) 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo apt-get -y update
sudo apt-get -y install language-pack-en-base
sudo dpkg-reconfigure locales
sudo apt-get -y install software-properties-common
sudo add-apt-repository "deb http://llvm.org/apt/utopic/ llvm-toolchain-utopic-3.7 main"
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get -y update
sudo apt-get -y install llvm-3.7-dev
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev \
libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \
libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev \
libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers \
libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev
sudo apt-get -y install libjson-rpc-cpp-dev
sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine

Ubuntu Vivid Vervet (15.04) 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo apt-get -y update
sudo apt-get -y install language-pack-en-base
sudo dpkg-reconfigure locales
sudo apt-get -y install software-properties-common
sudo add-apt-repository "deb http://llvm.org/apt/vivid/ llvm-toolchain-vivid-3.7 main"
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get -y update
sudo apt-get -y install llvm-3.7-dev
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev \
libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \
libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev \
libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers \
libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev
sudo apt-get -y install libjson-rpc-cpp-dev
sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine

Ubuntu WilyWerewolf (15.10) 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo apt-get -y update
sudo apt-get -y install language-pack-en-base
sudo dpkg-reconfigure locales
sudo apt-get -y install software-properties-common
sudo add-apt-repository "deb http://llvm.org/apt/wily/ llvm-toolchain-wily-3.7 main"
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get -y update
sudo apt-get -y install llvm-3.7-dev
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev \
libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \
libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev \
libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers \
libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev
sudo apt-get -y install libjsonrpccpp-dev
sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine

Ubuntu Xenial Xerus (16.04) 步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo apt-get -y update
sudo apt-get -y install language-pack-en-base
sudo dpkg-reconfigure locales
sudo apt-get -y install software-properties-common
sudo apt-get -y install llvm-3.7-dev
sudo add-apt-repository -y ppa:ethereum/ethereum-qt
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install build-essential git cmake libboost-all-dev libgmp-dev \
libleveldb-dev libminiupnpc-dev libreadline-dev libncurses5-dev \
libcurl4-openssl-dev libcryptopp-dev libmicrohttpd-dev libjsoncpp-dev \
libargtable2-dev libedit-dev mesa-common-dev ocl-icd-libopencl1 opencl-headers \
libgoogle-perftools-dev qtbase5-dev qt5-default qtdeclarative5-dev \
libqt5webkit5-dev libqt5webengine5-dev ocl-icd-dev libv8-dev libz-dev
sudo apt-get -y install libjsonrpccpp-dev
sudo apt-get -y install qml-module-qtquick-controls qml-module-qtwebengine \
qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs \
qml-module-qt-labs-settings qml-module-qtgraphicaleffects

为Fedora安装依赖

Fedora 20 步骤:

1
2
3
4
5
yum install git automake autoconf libtool cmake gcc gcc-c++ xkeyboard-config \
leveldb-devel boost-devel gmp-devel cryptopp-devel miniupnpc-devel \
qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtquick1-devel qt5-qtwebkit-devel \
mesa-dri-drivers snappy-devel ncurses-devel readline-devel curl-devel \
python-devel

Fedora 21 步骤:

1
2
3
4
5
yum install git automake autoconf libtool cmake gcc gcc-c++ xkeyboard-config \
leveldb-devel boost-devel gmp-devel cryptopp-devel miniupnpc-devel \
qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtquick1-devel qt5-qtwebkit-devel \
mesa-dri-drivers snappy-devel ncurses-devel readline-devel curl-devel \
python-devel jsoncpp-devel argtable-devel

从github建立json-rpc作为每个https://github.com/ethereum/cpp-ethereum/issues/617:

1
2
3
4
5
6
7
8
git clone https://github.com/cinemast/libjson-rpc-cpp
cd libjson-rpc-cpp
git checkout tags/v0.3.2
mkdir -p build
cd build
cmake .. && make
sudo make install
sudo ldconfig

Fedora 22 Fedora 22依赖可能会比已经安装的更多:

1
2
3
4
dnf install git automake autoconf libtool cmake gcc gcc-c++ xkeyboard-config \
leveldb-devel boost-devel gmp-devel cryptopp-devel miniupnpc-devel \
mesa-dri-drivers snappy-devel ncurses-devel readline-devel curl-devel \
python-devel jsoncpp-devel argtable-devel

安装 gcc 4.9版本!Fedora 22 和一个不同的编译器 (CC v5.3)一起。它 不能编译 webthreeumbrella,所以我从SRC安装了 gcc 4.9版本!

检查一下你有可用的 gcc4.9安装在/usr/local ,我把它安装在了 /home/app/gcc49,你可以自己选择在google上阅读说明怎么编译 gcc! 以后在每个 cmake之前,你都要这样用gcc4.9编译 webthree-umbrella所需的所有东西:

1
2
export CXX=/home/app/gcc49/bin/g++
export CC=/home/app/gcc49/bin/gcc

有了这个,你用 gcc4.9而不是和发行版F22一起的来编译。不推荐卸载和你发行版一起的编译器!你也可以用符号链接来工作。

从 Fedora COPR REPO LLVM3.7安装,使用:

1
2
dnf copr enable alonid/llvm-3.7
dnf install llvm-3.7 llvm-3.7-devel llvm-3.7-static llvm-3.7-libs

我必须要这样做是因为 Fedora 22从股票资源库和 llvm-3.5一起!可能也有其他解决方法,但是这个方法对我来说管用。 从 SRC安装CryptoPP https://github.com/weidai11/cryptoppCRYPTOPP_5_6_2:

1
2
3
4
5
6
7
8
9
10
git clone https://github.com/weidai11/cryptopp
cd cryptopp
git checkout release/CRYPTOPP_5_6_2
mkdir build
cd build
export CXX=/home/app/gcc49/bin/g++ <- be sure to compile with gcc4.9
export CC=/home/app/gcc49/bin/gcc <- be sure to compile with gcc4.9
cmake ..
make
make install

从COPR “dnf copr enable @kdesig/Qt5”安装QT5,更新的QT5版本:

1
dnf install qt5-*

这应该在 COPR repo安装QT5 5.6.0 版本。 其他用户的程序包,我没有测试。 从 https://github.com/qtproject/qtwebengine 安装 qtwebengine,我安装5.6.0 版本,其他的也有用,找找看 :D

1
2
3
4
5
6
git clone https://github.com/qtproject/qtwebengine
cd qtwebengine
git checkout release/v5.6.0
qmake-qt5 <- in other distros its just called qmake in fedora 22 qmake-qt5
make
make install

从github安装json-rpc https://github.com/ethereum/cpp-ethereum/issues/617%EF%BC%9A

1
2
3
4
5
6
7
8
9
10
git clone https://github.com/cinemast/libjson-rpc-cpp
cd libjson-rpc-cpp
git checkout tags/v0.4.2
mkdir -p build
cd build
export CXX=/home/app/gcc49/bin/g++ <- be sure to compile with gcc4.9
export CC=/home/app/gcc49/bin/gcc <- be sure to compile with gcc4.9
cmake .. && make
sudo make install
sudo ldconfig

确保检查jsonrpcstub是否在控制台有效,输入“jsonrpcstub” 查看是否有回答。如果答案是没有参数或s-l-t,就说明有效,但如果没有得到的文件,你就得把丢失的部分符号连接到libs dir /usr/local/lib64或者usr/local/lib,取决于文件blabla的位置。试着用 “updatedb” 找到然后“locate blabla.so”

现在试着编译,应该会有效,否则就是有丢失的符号连接因为没有这样的易嵌适文件或有一些丢失的数据包,试着用像这样“dnf search packname”或 “dnf list packname”的dnf找到它们。我要说的是这不是个5分钟的webthree-umbrella编译,享受Tflux99。

为OpenSUSE安装依赖

这是为在OpenSUSE上建立最新webthreeumbrella获取所需依赖的方法。它在Leap 42.1上完成了,但是应该有Tumbleweed和13.x可用的同等数据包。 主要资源库提供的第一个依赖:

1
2
3
4
5
6
7
zypper in git automake autoconf libtool cmake gcc gcc-c++ \
xkeyboard-config leveldb-devel boost-devel gmp-devel \
cryptopp-devel libminiupnpc-devel libqt5-qtbase-common-devel \
libqt5-qtdeclarative-devel libQTWebKit-devel libqt5-qtwebengine-devel \
libQt5Concurrent-devel Mesa ncurses-devel readline-devel libcurl-devel \
llvm llvm-clang llvm-clang-devel llvm-devel libLLVM binutils \
libmicrohttp-devel jsoncpp-devel opencl-headers-1.2 zlib-devel

可以用通用的libOpenCL1,但是我只用来自AMD驱动器资源库fglrx64_opencl_SUSE421的AMD 专有包测试过。

这些包裹不在标准的资源库,但是可以用OpenSUSE 创建服务包搜索和YaST 1-Click安装找到:

  1. libargtable2-devel

  2. libv8-3

  3. v8-devel

为OpenSUSE安装依赖 在Arch Linux编译webthree-umbrella需要来自官方资源库和Arch User资源库(AUR)的依赖。要从官方资源库安装,使用pacman。要从AUR安装包裹,有很多可用的AUR助手。 在本指南中,使用的是AUR助手yaourt。

安装依赖

1
2
3
# from official repositories sudo pacman -Sy git base-devel cmake boost crypto++ leveldb llvm miniupnpc
libcl opencl-headers libmicrohttpd qt5-base qt5-webengine
# from AUR yaourt -Sy libjson-rpc-cpp

编译源代码 在这一步,可以规定以太坊安装文件夹,尽管文件夹的规定是可选的。如果不指定,二进制文件夹会位于创建文件夹。然而,就本向导,假定以太坊文件会被安装在 /opt/eth下面。使用/opt的原因是比起安装在比如说/usr下面,这样能使以后删除以太坊文件夹更容易。而且/opt通常用于安装不受包裹系统 管理的软件,比如手动编译程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
# enter webthree-umbrella folder after cloning its github repository
cd webthree-umbrella
# make a build folder and enter into it
mkdir -p build && cd build
# create build files and specify Ethereum installation folder
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/eth
# compile the source code
make
# alternatively it is possible to specify number of compilation threads
# for example to use 4 threads execute make as follows:
# make -j 4
# install the resulting binaries, shared libraries and header files into /opt
sudo make install

成功编译和安装之后,以太坊二进制可以在/opt/eth/bin,/opt/eth/lib的共享库和/opt/eth/include标题文件中找到。

规定以太坊库路径 由于以太坊被安装在/opt/eth,执行它的二进制会导致不能找到以太坊共享库引起的链接错误。为纠正这个问题,需要将包含以太坊共享库的文件添加到LD_LIBRARY_PATH环境变量:

1
2
3
4
# update ~/.bashrc
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/eth/lib" >> ~/.bashrc
# reload ~/.bashrc
source ~/.bashrc

为Debian安装依赖

Debian Jessie (8.5)

警告:GUI应用没有在Debian上尝试过。所以,不用GUI应用创建要使用:cmake .. -DGUI=0

步骤:

1
2
3
4
sudo apt-get -y install gcc
sudo apt-get -y install g++
sudo apt-get -y install unzip
sudo apt-get -y install cmake

确保你安装的是cmake version 3.5.2。如果apt-get安装了一个旧版本,需要按照这个链接里的指示,把它从源编译。

1
2
3
4
sudo apt-get -y install libboost-all-dev
sudo apt-get -y install libgmp-dev
sudo apt-get -y install libjsoncpp-dev
sudo apt-get -y install libleveldb-dev

要安装cryptopp,很有必要从创建:

1
2
3
4
5
6
7
8
mkdir ~/download
cd ~/download
wget https://www.cryptopp.com/cryptopp563.zip
mkdir cryptopp
mv cryptopp563.zip cryptopp
cd cryptopp
unzip -a cryptopp563.zip
make static dynamic cryptest.exe

测试安装:

1
./cryptest.exe v

验证结果,再进行一个测试:

1
./cryptest.exe tv

验证成功?继续:

1
2
make libcryptopp.a libcryptopp.so cryptest.exe
sudo make install PREFIX=/usr/local

CryptoPP安装完成!

1
sudo apt-get -y install libminiupnpc-dev

现在从源安装LLVM建立:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo apt-get -y install build-essential
mkdir ~/download/llvm
cd ~/download/llvm
wget -c http://llvm.org/releases/3.8.0/llvm-3.8.0.src.tar.xz
wget -c http://llvm.org/releases/3.8.0/cfe-3.8.0.src.tar.xz
wget -c http://llvm.org/releases/3.8.0/compiler-rt-3.8.0.src.tar.xz
tar -xf llvm-3.8.0.src.tar.xz
tar -xf cfe-3.8.0.src.tar.xz
tar -xf compiler-rt-3.8.0.src.tar.xz

mv llvm-3.8.0.src llvm-3.8.0
mv cfe-3.8.0.src cfe
mv compiler-rt-3.8.0.src compiler-rt
mv cfe llvm-3.8.0/tools
mv compiler-rt llvm-3.8.0/projects/
mkdir build

cd build
cmake ../llvm-3.8.0
make
sudo make install
sudo ldconfig

回到apt-get:

1
2
sudo apt-get -y install opencl-dev
sudo apt-get -y install libcurl4-openssl-dev

从源安装json-rpc-cpp建立:

1
2
3
4
5
6
7
8
9
10
sudo apt-get source libmicrohttpd-dev
sudo apt-get -y install libargtable2-dev
sudo apt-get -y install libmicrohttpd-dev
git clone git://github.com/cinemast/libjson-rpc-cpp.git
mkdir -p libjson-rpc-cpp/build
cd libjson-rpc-cpp/build
cmake
make
sudo make install
sudo ldconfig

在命令行建立 只有在你安装完依赖以后(文件的剩余部分!)

1
2
3
4
5
mkdir build Make a directory for the build output
cd build Switch into that directory
cmake .. To generate a makefile.
make To build that makefile on the command-line
make -j <number> (or) Execute makefile with multiple cores

为Windows建立

我们只支持64位架构并且只适用于以下Windows版本:

  1. Windows 7

  2. Windows 8/8.1

  3. Windows 10

  4. Windows Server 2012 R2

通过从源建立和禁用VMJIT及其他特征,也能够让客户端适用于32位Windows。我们可能会接受拉取请求来增加这样的支持,但不会投入任何时间来专门开发支持Windows32位架构。

首要之事 你需要安装下面的依赖

软件备注 Git for Windows从Github检索源的命令行工具CMake交叉平台建构文件生成器Visual Studio 2015C++编译器和dev环境

获取源 通过执行下面命令来克隆包含所有源代码的git资源库:

1
git clone --recursive https://github.com/ethereum/webthree-umbrella.git

获取外部依赖 执行CMake脚本,下载并打开建立项目所需的先建的外部二进制:

1
cmake -P webthree-helpers/deps/install_deps.cmake

通用Visual Studio项目文件 然后执行下列指令,它会用CMake生成Visual Studio解决方案文件:

1
2
3
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..

这会导致在建立目录中创建cpp-ethereum.sln。

双击文件会启动Visual Studio。我们建议建立RelWithDebugInfo配置,但是所有其他都有效。

在命令行建立 或者,你可以在命令行建立这个项目,像这样:

1
cmake --build . --config RelWithDebInfo

为OS X建立

概览 – 龙来了! 我们不可能避免OS X建立中断,因为Homebrew是 “滚动发布”程式包管理者,这意味着平面会一直移动到我们下面,除非我们把所有的外部依赖都添加到Homebrew分接头,或者把它们作为git子模块添 加到umbrella项目。Enduser 的结果随着建立项目的时间而变化。昨天建立可能有效,但不能保证你的朋友今天在他们的机器上建立也会有同样的结果。毋庸置疑,这不是个让人高兴的情况。

如果你撞上了OS X建立中断,请浏览Github问题查看你遇到的问题是否已经被报告过。如果是,请在现存的问题下面评论。如果没有看到任何相似的问题,请创建一个新问题,具体描述你的OS X版本,cpp-ethereum 版本,硬件及其他你认为相关的细节。

请通过gist.github.com或相似服务添加verbose日志文件。

cpp-ethereum-development gitter频道是我们常去的地方,在那里共同合作解决问题。

我们只支持两个最新的OS X 版本:

  1. OS X Yosemite (10.10)

  2. OS X El Capitan (10.11)

cpp-ethereum代码基在旧版本的OS X上不能建立,我们一向不支持。 如果你在用旧版本的OS X,我们推荐你更新到最新版本,不仅仅是为了建立cpp-ethereum,也是为了你的安全考虑。

首要之事和外部依赖 确保你有最新版本的xcode安装。这包括Clang C++ 编译器,xcode IDE和其他在OS X上建立C++应用所必须的苹果开发工具。如果你是第一次安装xcode,或是刚刚安装了一个新版本,你需要在进行命令行建立之前接受许可:

1
sudo xcodebuild -license accept

如果你想建立图形用户界面应用(AlethZero和Mix),你需要安装XQuartz X11Window系统,因为OS X上的Qt使用那个X11层。

我们的OS X建立需要你安装Homebrew程式包管理者,以安装外部依赖。

如果你想从头开始,这是卸载Homebre的方法。

使用Homebre安装所有必须的外部依赖

1
2
3
4
brew update
brew upgrade
brew install boost cmake cryptopp miniupnpc leveldb gmp jsoncpp libjson-rpc-cpp libmicrohttpd
brew install homebrew/versions/llvm38

下面是建立图形用户界面应用:

1
brew install qt5 --with-d-bus

注意1:Qt5步骤在大多数人机器上花费很多小时。这是因为它使用非默认的设置,会导致从源建立。它似乎使用大约20G临时磁盘空间。当心! 注意2:Qt和Qt5程式包不能在Homebrew共存。如果你已经安装了Qt,你需要在成功建立cpp-ethereum之前卸载它:

1
brew uninstall --force qt

克隆资源库 克隆源代码,执行下列命令:

1
git clone --recursive https://github.com/ethereum/webthree-umbrella.git

你可以生成Makefile并在命令行上建立,或者生成X代码项目,在IDE建立。

命令行建立 从项目根:

1
2
3
4
mkdir build
cd build
cmake ..
make -j4 (or different value, depending on your number of CPU cores)

安装你自己的建立 你也可以用同样的Makefile,在你的机器上全局安装你自己的建立:

1
make install

生成xcode项目 从项目根:

1
2
3
mkdir build_xc
cd build_xc
cmake -G Xcode ..

这会生成叫做cpp-ethereum.xcodeproj的Xcode项目文件,你可以用x代码和build/debug/run打开。

为FreeBSD建立 注意-程式包一旦在FreeBSD主要端口中,这个指南应该变得更简单。

手动安装端口 对于一些步骤,你必须要求修正端口目录的根权限。

webthree-umbrella取决于libjson-rpc-cpp.shar,它也不在端口系统中。

首先你要下载shar文件,把它放在“devel”会话下的端口目录,通常是/usr/ports/devel

1
curl https://raw.githubusercontent.com/enriquefynn/webthree-umbrella-port/master/libjson-rpc-cpp.shar

现在我们用以下执行脚本:

1
2
cd /usr/ports/devel
sh libjson-rpc-cpp.shar

这会创建libjson-rpc-cpp端口。现在你应该为webthree-umbrella端口做同样的事,我们应该获得webthree-umbrella文件并在“net-p2p”目录下创建端口。

1
2
curl https://raw.githubusercontent.com/enriquefynn/webthree-umbrella-port/master/webthree-umbrella.cd /usr/ports/net-p2p
sh webthree-umbrella.shar

创建与安装 现在你可以导航到webthree-umbrella目录并安装端口:

1
2
cd /usr/ports/net-p2p/webthree-umbrella
make install clean

为Android建立

我们现在没有有效的Android建立,尽管它在doublethinkco的路径图中。Android使用Linu内核,但是与ARM Linux交叉建立有不同的应用程序界面,意味着需要特定的二进制。

ARM Linux发行版使用GLIBC执行库,Android使用bionic。

为iOS建立

我们现在没有有效的iOS建立,尽管它在doublethinkco的路径图中。iOS是类似UNIX的操作系统,基于Darwin (BSD),使用ARM芯片。这是与ARM Linux交叉建立不同的应用程序界面,意味着需要特定的二进制。

为Raspberry Pi Model A, B+, Zero, 2和3建立

EthEmbedded 为所有的Raspberry Mi模块保持建立脚本。它们在Raspi-Eth-Install资源库的Github上。也可能为这些平台交叉建立。

为Odroid XU3/XU4建立

EthEmbedded为Odroid模块保持建立脚本。支持更多的Odroid设备在将来是有可能的。它们在OdroidXU3-Eth-Install资源库的Github上。也可能为这些平台交叉建立。

为BeagleBone Black建立

EthEmbedded为BBB-Eth-Install资源库里Github上的BBB保持建立脚本。也可能为这个平台交叉建立。

为WandBoard建立

EthEmbedded为WandBoard-Eth-Install资源库里Github上的WandBoard保持建立脚本。也可能为这个平台交叉建立。

为Linux for ARM (cross builds)建立

doublethinkco保持基于Docker的交叉建立基础设施,它寄宿在cpp-ethereum-cross资源库的Github上。

在写本文档时,这些交叉建立二进制已经成功地使用在以下设备上:

  1. Jolla Phone (Sailfish OS)

  2. Nexus 5 (Sailfish OS)

  3. Meizu MX4 Ubuntu Edition (Ubuntu Phone)

  4. Raspberry Pi Model B+, Rpi2 (Raspbian)

  5. Odroid XU3 (Ubuntu MATE)

  6. BeagleBone Black (Debian)

  7. Wandboard Quad (Debian)

  8. C.H.I.P. (Debian)

待办的有:

  1. Tizen

  2. Android

  3. iOS

下一篇文章我们将会介绍《以太坊连载(九):以太坊C++客户端的安装与定制(三)》

感谢朝夕团队Azure, Bob参与《Ethereum Homestead Documentation》的翻译和校验。


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文