1. 程式人生 > >以太坊連載(八):C++客戶端的安裝與定製(二)

以太坊連載(八):C++客戶端的安裝與定製(二)

以太坊

從源安裝客戶端

概覽

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版本,請告訴我們。

克隆資源庫 要克隆原始碼,請執行以下指令:

安裝依賴(發行版特定)

為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
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
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

            
           

相關推薦

連載C++客戶安裝定製

從源安裝客戶端 概覽 cpp-ethereum 程式碼庫在幾個Git庫中傳播,庫在Git上被分組為webthree-umbrella庫下的子模組。 我們用一般的CMake編譯系統來生成平臺特定的架構檔案,這意味著工作流程和你用的任何作業系統都非常類似: 安裝編譯

[原始碼分析] V. 從錢包到客戶

以太坊作為一種數字貨幣以太幣的執行系統,顯然它也會有類似於錢包的客戶端程式,用來提供管理賬戶餘額等功能。我們知道,存放(或者繫結,掛靠)以太幣的賬戶,在程式碼中以Address型別變數存在,所以能夠管理多個以太坊賬戶應該屬於客戶端程式基本功能之一。本文會從管理賬戶資訊的程式碼包開始,自底向上的介紹以太坊客

連載社群、基金會、貢獻者介紹

社群 發起討論和問問題,請明智選擇論壇,並協助我們維護論壇環境整潔。 Reddit 以太坊reddit分論壇是最全面的以太坊論壇,這裡是大部分社群討論發生的地方和核心開發者最活躍的地方。如果你想對新聞、媒體、報道、公告、頭腦風暴進行一般的討論,選這個論壇就對了。一般

開發DApp實戰教程——用區塊鏈、星際檔案系統IPFS、Node.js和MongoDB來構建電商平臺

第一節 簡介 歡迎和我們一起來用以太坊實戰開發構建一個去中心化電商DApp!我們將會構建一個類似淘寶的線上電子商務應用,我將使用區塊鏈、星際檔案系統(IPFS)、Node.js和MongoDB來構建電商平臺,賣家可以自由地出售商品,買家可以自由地購物: 去中心化:

智慧合約學習筆記網頁互動

沒搞過web程式,花了幾天研究一下,總算是搞懂了網頁與以太坊節點的互動流程。 網頁與智慧合約互動,需要使用web3.js,它實現了通用JSON PRC規範,通過JSON RPC協議與以太坊節點進行互動。除了js以外,以太坊還提供了Java、Python等語言的API,對於沒有提供API的語言

智慧合約學習筆記使用Truffle框架開發部署智慧合約

truffle是一個智慧合約的開發框架,具體的就不介紹了,我們主要是說說怎麼使用這個框架來進行智慧合約的開發,官網戳這裡。 文章目錄 #安裝 首先我們要先安裝npm和truffle,安裝命令如下 sudo apt install npm sudo n

智慧合約學習筆記開發流程及工具鏈使用

本文主要介紹開發流程和工具鏈的使用,安裝過程百度上有好多,這裡就不贅述了 網上隨便找了一個智慧合約的例子,咱們來做一個投票系統,先用傳統的中心化方案去實現,然後在過度到區塊鏈1.0,最後再用區塊鏈2.0,感受一下開發思想的不同。 業務分析 傳統

區塊鏈java開發web3j

以太坊 java開發依賴 <dependency> <groupId>org.web3j</groupId> <artifactId>core</artifactId>

教程-智慧合約實戰投票合約

我們以一個投票合約來說明一下合約的部署和呼叫 合約程式碼 pragma solidity ^0.4.0; contract Votelihe { struct Candidate { uint votecount; string name

存在歸零風險只跌不漲的數字遊戲很好玩嗎?

不到5個月的時間,以太坊從500美元跌落至今的85美元。從神壇跌下來的速度之快,出乎所有人的意料。上次跌到167的時候,曾經就連一直只關注技術的V神也不得不三次站出來安撫人心,他表示類似的價格起伏已經是第三次發生了,幣價的變化只不過是億萬富豪之間的博弈遊戲而已。不知道現在這樣他還會不會再出來

1分鐘鏈圈 | 上DApp熱門排行榜ForkDelta位列第一!哈佛大學區塊鏈團隊獲新融資,重點發展區塊鏈教育...

Hi,艾瑞巴蒂!這裡是 7 月 12 日的每日1句話新聞晚報,只需1分鐘,看看全球最熱、最新的區

ETH上Dapp熱門排行榜加密貓降至第五,第一名出人意料!

本文由公眾號DappVision原創首發,轉載請聯絡授權【行情】BTC 現價 ¥42,453.62漲跌幅-0.37%ETH 現價 ¥2,946.98 漲跌幅0.28%EOS 現價 ¥46.66 漲跌幅-4.42%NAS 現價 ¥22.37 漲跌幅-10.33%(資料來源:Co

開發實戰geth客戶安裝

geth是以太坊的官方客戶端,它是一個命令列工具,提供很多命令和選項,可以執行以太坊節點、建立和管理賬戶、傳送交易、挖礦、部署智慧合約等。 下面介紹geth的三種安裝方法: 直接下載可執行檔案 線上安裝 從原始碼編譯安裝 方法一 直接下載可執行檔案

windows版環境搭建

以太坊windows版環境搭建步驟: 1.安裝geth客戶端geth-windows.exe 2.配置環境變數 3.在d盤新建資料夾eth 目錄為:D:\eth\,寫入創世區塊檔案程式碼,另存為genesis.exe { "config": {

C++傳智筆記6socket客戶發送報文接受報文的api接口

內存泄露 rcp 分配內存 strcpy light cpp tac 第三方 _file__ #define _CRT_SECURE_NO_WARNINGS #include "stdio.h" #include "stdlib.h" #include "string.

springCloud3微服務的註冊發現Eureka

springcloud 微服務的註冊與發現 eureka 一、簡介服務消費者需要一個強大的服務發現機制,服務消費者使用這種機制獲取服務提供者的網絡信息。即使服務提供者的信息發生變化,服務消費者也無須修改配置。服務提供者、服務消費者、服務發現組件三者之間的關系大致如下: 1.各個微服務在啟動時,將自

同步測試網絡時導致C盤存儲空間不足的解決辦法

它的 iss targe 方法 步驟 link 很好 tex print 在嘗試同步以太坊的的測試網絡時可能會遇到一個問題,就是會發現同步下來的區塊會默認存儲在C盤底下導致磁盤空間不足,具體的路徑如下: C:\Users\Administrator\AppData\Roam

大資料十七Hive簡介、安裝基本操作

一、簡介         Hive由Facebook開源用於解決海量結構化日誌的資料統計。Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張表,並提供類Sql查詢的功能。 hive本質是將HQL轉化為MapRedu

資料結構、儲存、區塊頭的關係分析

在Ethereum的世界裡,資料的最終儲存形式是[k,v]鍵值對,目前使用的[k,v]型底層資料庫是LevelDB;所有與交易,操作相關的資料,其呈現的集合形式是Block(Header);如果以Block為單位連結起來,則構成更大粒度的BlockChain(HeaderCh

網路基本功十五細說網路效能監測例項

介紹 網路路徑效能檢測主要包括三方面的內容:頻寬測量能夠獲知網路的硬體特性,如網路的最大容量,吞吐量測量能夠獲得網路實際可提供的最大容量,資料流測量能夠了解真實佔用的網路容量。 本文介紹在評估網路效能是否合理時,需要收集的資料及收集方式。涉及工具包括:ping,