以太坊連載(八):C++客戶端的安裝與定製(二)
從源安裝客戶端
概覽
cpp-ethereum 程式碼庫在幾個Git庫中傳播,庫在Git上被分組為webthree-umbrella庫下的子模組。
我們用一般的CMake編譯系統來生成平臺特定的架構檔案,這意味著工作流程和你用的任何作業系統都非常類似:
- 安裝編譯工具和外部程式包(這些是平臺獨立的)
- 從webthree-umbrella git庫克隆原始碼
- 執行CMake來生成編譯檔案(makefile,Visual Studio解決方案等)
- 編譯
特定作業系統安裝說明
為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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
為Fedora安裝依賴
Fedora 20 步驟:
1 2 3 4 5 |
|
Fedora 21 步驟:
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 |
|
Fedora 22 Fedora 22依賴可能會比已經安裝的更多:
1 2 3 4 |
|
安裝 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 |
|
有了這個,你用 gcc4.9而不是和發行版F22一起的來編譯。不推薦解除安裝和你發行版一起的編譯器!你也可以用符號連結來工作。
從 Fedora COPR REPO LLVM3.7安裝,使用:
1 2 |
|
我必須要這樣做是因為 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 |
|
從COPR “dnf copr enable @kdesig/Qt5”安裝QT5,更新的QT5版本:
1 |
|
這應該在 COPR repo安裝QT5 5.6.0 版本。 其他使用者的程式包,我沒有測試。 從 https://github.com/qtproject/qtwebengine 安裝 qtwebengine,我安裝5.6.0 版本,其他的也有用,找找看 :D
1 2 3 4 5 6 |
|
1 2 3 4 5 6 7 8 9 10 |
|
確保檢查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 |
|
可以用通用的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。
安裝依賴
1 2 3 |
|
編譯原始碼 在這一步,可以規定以太坊安裝資料夾,儘管資料夾的規定是可選的。如果不指定,二進位制資料夾會位於建立資料夾。然而,就本嚮導,假定以太坊檔案會被安裝在/opt/eth下面。使用/opt的原因是比起安裝在比如說/usr下面,這樣能使以後刪除以太坊資料夾更容易。而且/opt通常用於安裝不受包裹系統管理的軟體,比如手動編譯程式。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
成功編譯和安裝之後,以太坊二進位制可以在/opt/eth/bin,/opt/eth/lib的共享庫和/opt/eth/include標題檔案中找到。
規定以太坊庫路徑 由於以太坊被安裝在/opt/eth,執行它的二進位制會導致不能找到以太坊共享庫引起的連結錯誤。為糾正這個問題,需要將包含以太坊共享庫的檔案新增到LD_LIBRARY_PATH環境變數:
1 2 3 4 |
|
為Debian安裝依賴
Debian Jessie (8.5)
警告:GUI應用沒有在Debian上嘗試過。所以,不用GUI應用建立要使用:cmake .. -DGUI=0
步驟:
1 2 3 4 |
|
確保你安裝的是cmake version 3.5.2。如果apt-get安裝了一箇舊版本,需要按照這個連結裡的指示,把它從源編譯。
1 2 3 4 |
|
要安裝cryptopp,很有必要從建立:
1 2 3 4 5 6 7 8 |
|
測試安裝:
1 |
|
驗證結果,再進行一個測試:
1 |
|
驗證成功?繼續:
1 2 |
|
CryptoPP安裝完成!
1 |
|
現在從源安裝LLVM建立:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
回到apt-get:
1 2 |
|
從源安裝json-rpc-cpp建立:
1 2 3 4 5 6 7 8 9 10 |
|
在命令列建立 只有在你安裝完依賴以後(檔案的剩餘部分!)
1 2 3 4 5 |
|
為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 |
|
獲取外部依賴 執行CMake指令碼,下載並開啟建立專案所需的先建的外部二進位制:
1 |
|
通用Visual Studio專案檔案 然後執行下列指令,它會用CMake生成Visual Studio解決方案檔案:
1 2 3 |
|
這會導致在建立目錄中建立cpp-ethereum.sln。
雙擊檔案會啟動Visual Studio。我們建議建立RelWithDebugInfo配置,但是所有其他都有效。
在命令列建立 或者,你可以在命令列建立這個專案,像這樣:
1 |
|
為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 |
|
如果你想建立圖形使用者介面應用(AlethZero和Mix),你需要安裝XQuartz X11Window系統,因為OS X上的Qt使用那個X11層。
我們的OS X建立需要你安裝Homebrew程式包管理者,以安裝外部依賴。
如果你想從頭開始,這是解除安裝Homebre的方法。
使用Homebre安裝所有必須的外部依賴
1 2 3 4 |
|
下面是建立圖形使用者介面應用:
1 |
|
注意1:Qt5步驟在大多數人機器上花費很多小時。這是因為它使用非預設的設定,會導致從源建立。它似乎使用大約20G臨時磁碟空間。當心! 注意2:Qt和Qt5程式包不能在Homebrew共存。如果你已經安裝了Qt,你需要在成功建立cpp-ethereum之前解除安裝它:
1 |
|
克隆資源庫 克隆原始碼,執行下列命令:
1 |
|
你可以生成Makefile並在命令列上建立,或者生成X程式碼專案,在IDE建立。
命令列建立 從專案根:
1 2 3 4 |
|
安裝你自己的建立 你也可以用同樣的Makefile,在你的機器上全域性安裝你自己的建立:
1 |
|
生成xcode專案 從專案根:
1 2 3 |
|
這會生成叫做cpp-ethereum.xcodeproj的Xcode專案檔案,你可以用x程式碼和build/debug/run開啟。
為FreeBSD建立 注意-程式包一旦在FreeBSD主要埠中,這個指南應該變得更簡單。
手動安裝埠 對於一些步驟,你必須要求修正埠目錄的根許可權。
webthree-umbrella取決於libjson-rpc-cpp.shar,它也不在埠系統中。
首先你要下載shar檔案,把它放在“devel”會話下的埠目錄,通常是/usr/ports/devel
1 |
|
現在我們用以下執行指令碼:
1 2 |
|