Mac eos 環境搭建
最近EOS官網出了文檔,說可以跑通一個獨立測試的節點了。這周嘗試自行搭建了一下,由於自己不完全做mac下的開發,且這玩意是C寫的,所以make
起來遇到不少坑,記錄下來。附完整踩坑、填坑記錄。
1. 搭建環境
在mac
下大家應該都用brew
來管理包吧。首先官方說要安裝:
- Boost 1.64
- OpenSSL
- LLVM 4.0
通過下面命令,可以盡可能全的安裝編譯環境:
另外需要安裝的下面這個,brew
並沒有,需要手動安裝:
- secp256k1-zkp (Cryptonomex branch)
步驟如下:
2. 編譯LLVM和clang來支持智能合約運行的WASM環境
默認安裝的LLVM和clang並不會包含WASM模塊,所以需要自行編譯,下面是實現僅僅編譯LLVM只會生成WASM模塊。
3. 獲取EOS源碼
遞歸取下來所有的EOS及其模塊代碼:
如果你沒有帶--recursive
標誌,可以運行下面的命令來抓下來需要的模塊(這個命令我沒有試,使用時,要看是不是需要進到目錄內):
4. 使用WASM編譯器完整編譯EOS源碼
需要配置WASM_LLVM_CONFIG
環境變量來找到上面構建的WASM的編譯器。這個編譯器是用來編譯eos/contracts
下的合約例子,和相應的測試用例的。
上面的
cmake ..
會遇到一些坑,可參考使用第7
節中完整填坑後的cmake
腳本。
5. 創建並運行一個測試網節點
進入到編譯目錄
運行上述命令後會立即報錯,按Ctrl C強制中止後,命令運行目錄下,會生成默認的./data-dir/
./data-dir/config.ini
配置。可以略微看看默認的配置,再啟動就好了(這裏相當於沒有配置,幫你生成了默認配置,所有人都一樣,不安全):
如果要支持命令行,在config.ini
下,添加下述配置。參見 https://eosio.github.io/eos/group__eosc.html
這樣,就可以通過EOS
自己的命令行工具eosc
來進行交互,如下:
輸出效果:
6. 可能遇到的坑
6.1 可能遇到GMP包找不到的報錯:
解決辦法:
6.2 可能遇到ssl相關的錯
但明明已經安裝,原因是由於新版mac已經移除了openssl,所以我們需要手動配置環境變量,可以在cmake的命令行中通過-D
OPENSSL_ROOT_DIR
和OPENSSL_LIBRARIES
兩個環境變量:
6.3 最後的聯接時失敗Link failed
第一種,使用brew install llvm
後會遇到下面的報錯:
解決辦法,配置環境變量:
另一種可能,是手動安裝llvm遇到下面的報錯:
初步懷疑這種是因為在第2
節中,使用的是默認的llvm
編譯了,但卻後續又使用手動安裝的llvm
進行後續操作導致的。故統一使用brew
管理的llvm
。
完整的解決過程,參考這裏:https://github.com/EOSIO/eos/issues/99
7. 完整的cmake腳本供參考
感謝您的支持
Mac eos 環境搭建