用Visual Studio 2017在Windows10上構建EOS
對於任何用於Visual Studio IDE的Windows C ++開發人員,你可能會發現目前不支援使用它構建令人敬畏的EOS專案。
所以我決定將我的技能用於任務並修改原始碼以盡我所能支援它,並決定與社群分享我的經驗。
先決條件
你需要做的第一件事是使用C++和Cmake支援安裝Visual Studio 2017。
- 安裝VS 2017( https://www.visualstudio.com/ )並新增額外元件。
- 新增元件VC ++
- 新增元件VC ++ 2017工具集v141
- 新增元件VC ++ 2017工具集CMAKE
- 新增元件MSBuild
- 新增元件Windows 10 SDK(10.0.16299.0)
- 接下來,你需要安裝NASM和perl來構建openssl依賴項。
- 安裝NASM( http://www.nasm.us/ )
- 安裝perl(ActivePerl)( https://www.perl.org/ )
-
build.ps1
powershell指令碼使用此perl
模組解壓縮tar
檔案,執行命令:
ppm install Archive-Extract
- 由於我需要對EOS原始碼進行一些修改,你需要從github獲取我的fork
git clone https://github.com/mmcs85/eos --recursive
構建
為了構建EOS,使用了以下依賴項:
- boost 1.65.1
- gettext 0.19.8
- zlib 1.2.11
- bzip2-1.0.6
- openssl 1.1.0
- mpir 3.0.0 (forked from the GMP bignum library)
- secp256k1-zkp (latest)
- binaryen (latest)
- llvm 4.0
- clang 4.0
為了使構建過程更容易,我建立了一個 build.ps1
powershell指令碼,用於構建具有依賴項的EOS。
在powershell中執行simple命令來構建包括EOS在內的所有內容:
.\build.ps1
僅用於構建依賴項,稍後在visual studio中使用cmake構建系統,執行命令:
.\build.ps1 -buildType dep
要檢查所有選項,可以執行該命令:
.\build.ps1 -help
如果你看到一個帶有eosd和eosc祝賀的 install\bin
資料夾,你已經成功構建了EOS :)
建立智慧合約
在構建EOS之後,另一個重要的部分是生成智慧合約webassembly。安裝eoscpp bash指令碼以建立智慧合約模板並構建其.wast,但沒有Windows版本。
所以我決定建立等效的 eoscpp.ps1
powershell指令碼來完成這項任務。
你將在 install\bin
資料夾中找到它,你可以執行該命令以檢視選項:
.\eoscpp.ps1 -help
除錯
你需要首先在除錯模式下構建EOS,包括依賴項。
注意:如果你之前構建的只是先刪除extdeps並安裝資料夾,然後執行命令:
.\build.ps1 -config Debug -buildType dep
如果你在Visual Studio中使用Cmake整合構建EOS,則可以從安裝資料夾除錯任何應用程式,包括eosd或eosc。你也可以像往常一樣附加到任何程序。
限制
到目前為止,我發現的最大限制是使用了在MSVC編譯器中使用intrisic __int128 not supporter的uint128資料型別。
我已經嘗試過boost uint128版本,但它引用了std libs,這不是一個為.wast建立大量bloatware的選項。
我正在考慮調查Clang/gcc實現,但是找到了time。
還必須使用此資料型別禁用相關單元測試。
結論
我在這次冒險中學到了很多關於區塊鏈和EOS的知識,而我只是在表面上。
請注意,這是一個非正式的教程,EOS的支援和整合完全由他們自行決定。此外,我無法保證我的fork與eosio上游的正確同步。我會盡力維護它。
我相信EOS團隊無論如何都要做更重要的事情:)
最後隨時提出任何問題。問候大家。
======================================================================
分享一些以太坊、EOS、比特幣等區塊鏈相關的互動式線上程式設計實戰教程:
- java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
- php以太坊,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和交易等內容。
- python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
- 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
- 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
- ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約程式碼庫二次開發,實戰專案採用Truffle,IPFS,實現了通證以及去中心化的通證交易所。
- C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
- EOS教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。
- 深入淺出玩轉EOS錢包開發 ,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智慧合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中整合對EOS區塊鏈的支援。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。
- java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
- php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
- c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在C#程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。
- tendermint區塊鏈開發詳解 ,本課程適合希望使用tendermint進行區塊鏈開發的工程師,課程內容即包括tendermint應用開發模型中的核心概念,例如ABCI介面、默克爾樹、多版本狀態庫等,也包括代幣發行等豐富的實操程式碼,是go語言工程師快速入門區塊鏈開發的最佳選擇。
匯智網原創翻譯,轉載請標明出處。這裡是 用Visual Studio 2017在Windows10上構建EOS