用Visual Studio 2017在Windows10上构建EOS

对于任何用于Visual Studio IDE的Windows C ++开发人员,你可能会发现目前不支持使用它构建令人敬畏的EOS项目。

所以我决定将我的技能用于任务并修改源代码以尽我所能支持它,并决定与社区分享我的经验。

先决条件

你需要做的第一件事是使用C++和Cmake支持安装Visual Studio 2017。

  1. 安装VS 2017(https://www.visualstudio.com/)并添加额外组件。
  • 添加组件VC ++
  • 添加组件VC ++ 2017工具集v141
  • 添加组件VC ++ 2017工具集CMAKE
  • 添加组件MSBuild
  • 添加组件Windows 10 SDK(10.0.16299.0)
  1. 接下来,你需要安装NASM和perl来构建openssl依赖项。
  1. build.ps1 powershell脚本使用此perl模块解压缩tar文件,运行命令:
1
ppm install Archive-Extract
  1. 由于我需要对EOS源代码进行一些修改,你需要从github获取我的fork
1
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在内的所有内容:

1
.\build.ps1

仅用于构建依赖项,稍后在visual studio中使用cmake构建系统,运行命令:

1
.\build.ps1 -buildType dep

要检查所有选项,可以运行该命令:

1
.\build.ps1 -help

如果你看到一个带有eosd和eosc祝贺的install\bin文件夹,你已经成功构建了EOS :)

建立智能合约

在构建EOS之后,另一个重要的部分是生成智能合约webassembly。安装eoscpp bash脚本以创建智能合约模板并构建其.wast,但没有Windows版本。

所以我决定创建等效的eoscpp.ps1 powershell脚本来完成这项任务。

你将在install\bin文件夹中找到它,你可以运行该命令以查看选项:

1
.\eoscpp.ps1 -help

调试

你需要首先在调试模式下构建EOS,包括依赖项。

注意:如果你之前构建的只是先删除extdeps并安装文件夹,然后运行命令:

1
.\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