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

從源安裝客戶端

概覽
cpp-ethereum 代碼庫在幾個Git庫中傳播,庫在Git上被分組爲webthree-umbrella庫下的子模塊。git

咱們用通常的CMake編譯系統來生成平臺特定的架構文件,這意味着工做流程和你用的任何操做系統都很是相似:github

  • 安裝編譯工具和外部程序包(這些是平臺獨立的)
  • 從webthree-umbrella git庫克隆源代碼
  • 運行CMake來生成編譯文件(makefile,Visual Studio解決方案等)
  • 編譯

特定操做系統安裝說明
爲Linux建立 注意 —— 經過從源創建和禁用 VMJIT及其餘特徵,也可以讓客戶端適用於32位 Ubuntu。咱們可能會接受 pull請求來增長這樣的支持,但不會投入任什麼時候間來專門開發支持 Ubuntu 32位架構。web

Linux有個發行版特定程序包系統步驟的幻燈片,這是咱們在開始從源創建以前要作的第一件事。下面的章節試圖體現這些步驟。若是你正在使用不一樣的發行版和hit版本,請告訴咱們。json

克隆資源庫 要克隆源代碼,請執行如下指令:api

git clone —recursive https://github.com/ethereum/w...xcode

安裝依賴(發行版特定)
爲Ubuntu安裝依賴
Ubuntu Trusty Tahr (14.04) 步驟:
圖片描述安全

Ubuntu Utopic Unicorn (14.10) 步驟:
圖片描述架構

Ubuntu Vivid Vervet (15.04) 步驟:
圖片描述app

Ubuntu WilyWerewolf (15.10) 步驟:
圖片描述ionic

Ubuntu Xenial Xerus (16.04) 步驟:
圖片描述

爲Fedora安裝依賴
Fedora 20 步驟:
圖片描述

Fedora 21 步驟:
圖片描述

從github創建json-rpc做爲每一個https://github.com/ethereum/c...:
圖片描述

Fedora 22 Fedora 22依賴可能會比已經安裝的更多:
圖片描述

安裝 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所需的全部東西:

圖片描述

有了這個,你用 gcc4.9而不是和發行版F22一塊兒的來編譯。不推薦卸載和你發行版一塊兒的編譯器!你也能夠用符號連接來工做。

從 Fedora COPR REPO LLVM3.7安裝,使用:
圖片描述

我必需要這樣作是由於 Fedora 22從股票資源庫和 llvm-3.5一塊兒!可能也有其餘解決方法,可是這個方法對我來講管用。 從 SRC安裝CryptoPP https://github.com/weidai11/c... CRYPTOPP_5_6_2:
圖片描述

從COPR 「dnf copr enable @kdesig/Qt5」安裝QT5,更新的QT5版本:

圖片描述

這應該在 COPR repo安裝QT5 5.6.0 版本。 其餘用戶的程序包,我沒有測試。 從 https://github.com/qtproject/... 安裝 qtwebengine,我安裝5.6.0 版本,其餘的也有用,找找看 :D
圖片描述

從github安裝json-rpc https://github.com/ethereum/c...
圖片描述

確保檢查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可用的同等數據包。 主要資源庫提供的第一個依賴:
圖片描述

能夠用通用的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。

安裝依賴
圖片描述

編譯源代碼 在這一步,能夠規定以太坊安裝文件夾,儘管文件夾的規定是可選的。若是不指定,二進制文件夾會位於建立文件夾。然而,就本嚮導,假定以太坊文件會被安裝在/opt/eth下面。使用/opt的緣由是比起安裝在好比說/usr下面,這樣能使之後刪除以太坊文件夾更容易。並且/opt一般用於安裝不受包裹系統管理的軟件,好比手動編譯程序。

圖片描述

成功編譯和安裝以後,以太坊二進制能夠在/opt/eth/bin,/opt/eth/lib的共享庫和/opt/eth/include標題文件中找到。

規定以太坊庫路徑 因爲以太坊被安裝在/opt/eth,執行它的二進制會致使不能找到以太坊共享庫引發的連接錯誤。爲糾正這個問題,須要將包含以太坊共享庫的文件添加到LD_LIBRARY_PATH環境變量:
圖片描述

爲Debian安裝依賴
Debian Jessie (8.5)

警告:GUI應用沒有在Debian上嘗試過。因此,不用GUI應用建立要使用:cmake .. -DGUI=0

步驟:
圖片描述

確保你安裝的是cmake version 3.5.2。若是apt-get安裝了一箇舊版本,須要按照這個連接裏的指示,把它從源編譯。

圖片描述

要安裝cryptopp,頗有必要從建立:

圖片描述

測試安裝:
圖片描述

驗證結果,再進行一個測試:
圖片描述

驗證成功?繼續:
圖片描述

CryptoPP安裝完成!
圖片描述

如今從源安裝LLVM創建:

圖片描述

回到apt-get:
圖片描述

從源安裝json-rpc-cpp創建:
圖片描述

在命令行創建 只有在你安裝完依賴之後(文件的剩餘部分!)

圖片描述

爲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資源庫:
圖片描述

獲取外部依賴 執行CMake腳本,下載並打開創建項目所需的先建的外部二進制:
圖片描述

通用Visual Studio項目文件 而後執行下列指令,它會用CMake生成Visual Studio解決方案文件:

圖片描述

這會致使在創建目錄中建立cpp-ethereum.sln。

雙擊文件會啓動Visual Studio。咱們建議創建RelWithDebugInfo配置,可是全部其餘都有效。

在命令行創建 或者,你能夠在命令行創建這個項目,像這樣:
圖片描述

爲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,或是剛剛安裝了一個新版本,你須要在進行命令行創建以前接受許可:
圖片描述

若是你想創建圖形用戶界面應用(AlethZero和Mix),你須要安裝XQuartz X11Window系統,由於OS X上的Qt使用那個X11層。

咱們的OS X創建須要你安裝Homebrew程式包管理者,以安裝外部依賴。

若是你想從頭開始,這是卸載Homebre的方法。

使用Homebre安裝全部必須的外部依賴
圖片描述

下面是創建圖形用戶界面應用:

圖片描述

注意1:Qt5步驟在大多數人機器上花費不少小時。這是由於它使用非默認的設置,會致使從源創建。它彷佛使用大約20G臨時磁盤空間。小心! 注意2:Qt和Qt5程式包不能在Homebrew共存。若是你已經安裝了Qt,你須要在成功創建cpp-ethereum以前卸載它:
圖片描述

克隆資源庫 克隆源代碼,執行下列命令:
圖片描述

你能夠生成Makefile並在命令行上創建,或者生成X代碼項目,在IDE創建。

命令行創建 從項目根:
圖片描述

安裝你本身的創建 你也能夠用一樣的Makefile,在你的機器上全局安裝你本身的創建:
圖片描述

生成xcode項目 從項目根:

圖片描述

這會生成叫作cpp-ethereum.xcodeproj的Xcode項目文件,你能夠用x代碼和build/debug/run打開。

爲FreeBSD創建 注意-程式包一旦在FreeBSD主要端口中,這個指南應該變得更簡單。

手動安裝端口 對於一些步驟,你必需要求修正端口目錄的根權限。

webthree-umbrella取決於libjson-rpc-cpp.shar,它也不在端口系統中。

首先你要下載shar文件,把它放在「devel」會話下的端口目錄,一般是/usr/ports/devel
圖片描述

如今咱們用如下執行腳本:
圖片描述

這會建立libjson-rpc-cpp端口。如今你應該爲webthree-umbrella端口作一樣的事,咱們應該得到webthree-umbrella文件並在「net-p2p」目錄下建立端口。
圖片描述

建立與安裝 如今你能夠導航到webthree-umbrella目錄並安裝端口:
圖片描述

爲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++客戶端的安裝與定製(三)》

感謝朝夕團隊Azure, Bob參與《Ethereum Homestead Documentation》的翻譯和校驗。

汪曉明 HPB芯鏈創始人,巴比特專欄做家。十餘年金融大數據、區塊鏈技術開發經驗,曾參與建立銀聯大數據。主創區塊鏈教學視頻節目《明說》30多期,編寫了《以太坊官網文檔中文版》,並做爲主要做者編寫了《區塊鏈開發指南》,在中國區塊鏈社區以ID「藍蓮花」知名。
相關文章
相關標籤/搜索