安装Solidity编译器——从源代码编译

从源代码编译

克隆代码库

执行以下命令,克隆源代码:

git clone --recursive https://github.com/ethereum/solidity.git
cd solidity

如果你想参与 Solidity 的开发, 你可分叉 Solidity 源码库后,用你个人的分叉库作为第二远程源:

cd solidity
git remote add personal git@github.com:[username]/solidity.git

Solidity 有 Git 子模块,需确保完全加载它们:

git submodule update --init --recursive

先决条件 - macOS

在 macOS 中,需确保有安装最新版的Xcode, Xcode 包含Clang C++编译器, 而 Xcode IDE 和其他苹果开发工具是 OS X 下编译 C++ 应用所必须的。 如果你是第一次安装 Xcode 或者刚好更新了 Xcode 新版本,则在使用命令行构建前,需同意 Xcode 的使用协议:

sudo xcodebuild -license accept

Solidity 在 OS X 下构建,必须 安装Homebrew包管理器来安装依赖。 如果你想从头开始,这里是卸载 Homebrew的方法。

先决条件 - Windows

在Windows下构建Solidity,需下载的依赖软件包:

软件 备注
Git for Windows C从Github上获取源码的命令行工具
CMake 跨平台构建文件生成器
Visual Studio 2015 C++编译开发环境

外部依赖

在 macOS、Windows和其他 Linux 发行版上,有一个脚本可以“一键”安装所需的外部依赖库。本来是需要人工参与的多步操作,现在只需一行命令:

./scripts/install_deps.sh

Windows 下执行:

scripts\install_deps.bat

命令行构建

确保你已安装外部依赖(见上面)

Solidity 使用 CMake 来配置构建。Linux、macOS 和其他 Unix系统上的构建方式都差不多:

mkdir build
cd build
cmake .. && make

也有更简单的:

#note: 将安装 solc 和 soltest 到 usr/local/bin 目录
./scripts/build.sh

对于 Windows 执行:

mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..

这组指令的最后一句,会在 build 目录下创建一个 solidity.sln 文件,双击后,默认会使用 Visual Studio 打开。我们建议在VS上创建 RelWithDebugInfo 配置文件。

或者用命令创建:

cmake --build . --config RelWithDebInfo

CMake参数

如果你对 CMake 命令选项有兴趣,可执行 cmake .. -LH 进行查看。

版本号字符串详解

Solidity 版本名包含四部分:

  • 版本号
  • 预发布版本号,通常为 develop.YYYY.MM.DD 或者 nightly.YYYY.MM.DD
  • commit.GITHASH 格式展示的提交号
  • 由若干条平台、编译器详细信息构成的平台标识

如果本地有修改,则 commit 部分有后缀 .mod

这些部分按照 Semver 的要求来组合, Solidity 预发布版本号等价于 Semver 预发布版本号, Solidity 提交号和平台标识则组成 Semver 的构建元数据。

发行版样例:0.4.8+commit.60cc1668.Emscripten.clang.

预发布版样例: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang

版本信息详情

在版本发布之后,补丁版本号会增加,因为我们假定只有补丁级别的变更会在之后发生。当变更被合并后,版本应该根据semver和变更的剧烈程度进行调整。最后,发行版本总是与当前每日构建版本的版本号一致,但没有 prerelease 指示符。

例如:

  • 0.4.0 版本发布
  • 从现在开始,每晚构建为 0.4.1 版本
  • 引入非破坏性变更 —— 不改变版本号
  • 引入破坏性变更 —— 版本跳跃到 0.5.0
  • 0.5.0 版本发布

该方式与 version pragma 一起运行良好。

上一篇:安装Solidity编译器

下一篇:跟着示例学习Solidity——投票

你可能感兴趣的:(Solidity文档翻译系列,以太坊去中心化应用开发,Solidity安装,源代码编译,智能合约,区块链,命令行构建)