zoukankan      html  css  js  c++  java
  • 以太坊:C++客户端的安装与定制(二)

    从源安装客户端

    概览

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

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

    • 安装编译工具和外部程序包(这些是平台独立的)
    • 从webthree-umbrella git库克隆源代码
    • 运行CMake来生成编译文件(makefile,Visual Studio解决方案等)
    • 编译

    特定操作系统安装说明

    为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安装,使用:

     
    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:

     
    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版本:

     
    dnf install qt5-*

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

     
    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

     
    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可用的同等数据包。 主要资源库提供的第一个依赖:

     
    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安装找到:

    • libargtable2-devel
    • libv8-3
    • v8-devel

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

    安装依赖

     
    # 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版本:

    • Windows 7
    • Windows 8/8.1
    • Windows 10
    • 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 版本:

    • OS X Yosemite (10.10)
    • 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上。

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

    • Jolla Phone (Sailfish OS)
    • Nexus 5 (Sailfish OS)
    • Meizu MX4 Ubuntu Edition (Ubuntu Phone)
    • Raspberry Pi Model B+, Rpi2 (Raspbian)
    • Odroid XU3 (Ubuntu MATE)
    • BeagleBone Black (Debian)
    • Wandboard Quad (Debian)
    • C.H.I.P. (Debian)

    待办的有:

    • Tizen
    • Android
    • iOS

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

  • 相关阅读:
    做题遇到的问题集合
    常见算法和数据结构存在的坑(updating)
    Loj#2090. 「ZJOI2016」旅行者(网格图分治)
    洛谷P3332 [ZJOI2013]K大数查询(整体二分板题)
    dij费用流模板
    KM求每个大小的匹配的最优解 模板
    JZOJ 5067. 【GDOI2017第二轮模拟day2】有理有据题 (KD-tree+历史最值问题)
    Codeforces 1186F. Vus the Cossack and a Graph(欧拉回路)
    bzoj#2095. [Poi2010]Bridges(二分+混合图欧拉回路)
    二维最小乘积生成树模板
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312587.html
Copyright © 2011-2022 走看看