阅读(1591) (15)

solidity 从源代码构建

2022-05-10 15:47:28 更新

先决条件 - 所有操作系统

以下是所有 Solidity 构建的依赖项:

软件

笔记

CMake(版本 3.13+)

跨平台构建文件生成器。

Boost(Windows 上的版本 1.77+,其他系统为 1.65+)

C++ 库。

Git

用于检索源代码的命令行工具。

z3(4.8+ 版,可选)

与 SMT 检查器一起使用。

cvc4(可选)

与 SMT 检查器一起使用。

笔记
0.5.10 之前的 Solidity 版本可能无法正确链接到 Boost 版本 1.70+。 一种可能的解决方法是在运行 cmake 命令配置solidity 之前临时重命名<Boost install path>/lib/cmake/Boost-1.70.0
从 0.5.10 开始,与 Boost 1.70+ 的链接应该可以在没有人工干预的情况下工作。
笔记
默认构建配置需要特定的 Z3 版本(上次更新代码时的最新版本)。Z3 版本之间引入的更改通常会导致返回的结果略有不同(但仍然有效)。我们的 SMT 测试没有考虑到这些差异,并且可能会因与编写它们的版本不同的版本而失败。这并不意味着使用不同版本的构建是错误的。如果将-DSTRICT_Z3_VERSION=OFF选项传递给 CMake,则可以使用满足上表中给出的要求的任何版本进行构建。但是,如果您这样做,请记住传递--no-smt 跳过 SMT 测试的scripts/tests.sh选项。

最低编译器版本

以下 C++ 编译器及其最低版本可以构建 Solidity 代码库:

先决条件 - macOS

对于 macOS 构建,请确保您安装了最新版本的 Xcode。这包含Clang C++ 编译器、 Xcode IDE和其他在 OS X 上构建 C++ 应用程序所需的 Apple 开发工具。如果您是第一次安装 Xcode,或者刚刚安装了新版本,那么您需要同意进行命令行构建之前的许可证:

sudo xcodebuild -license accept

我们的 OS X 构建脚本使用Homebrew 包管理器来安装外部依赖项。如果您想从头开始,这里是卸载 Homebrew的方法。

先决条件 - Windows

您需要为 Solidity 的 Windows 版本安装以下依赖项:

软件

笔记

Visual Studio 2019 构建工具

C++ 编译器

Visual Studio 2019 (可选)

C++ 编译器和开发环境。

Boost(版本 1.77+)

C++ 库。

如果您已经有一个 IDE 并且只需要编译器和库,则可以安装 Visual Studio 2019 构建工具。

Visual Studio 2019 提供 IDE 和必要的编译器和库。因此,如果您没有 IDE 并且更喜欢开发 Solidity,Visual Studio 2019 可能是您轻松完成所有设置的选择。

以下是应在 Visual Studio 2019 构建工具或 Visual Studio 2019 中安装的组件列表:

  • Visual Studio C++ 核心功能

  • VC++ 2019 v141 工具集 (x86,x64)

  • Windows 通用 CRT SDK

  • Windows 8.1 SDK

  • C++/CLI 支持

我们有一个帮助脚本,您可以使用它来安装所有必需的外部依赖项:

scripts\install_deps.ps1

这将安装​boost​和cmake到​deps​子目录。

克隆存储库

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

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

如果您想帮助开发 Solidity,您应该分叉 Solidity 并将您的个人分叉添加为第二个远程地址:

git remote add personal git@github.com:[username]/solidity.git
笔记
此方法将导致预发布版本,例如在此类编译器生成的每个字节码中设置一个标志。如果您想重新构建已发布的 Solidity 编译器,请使用 github 发布页面上的源代码 tarball:
https://github.com/ethereum/solidity/releases/download/v0.XY/solidity_0.XYtar.gz
(不是github提供的“源代码”)。

命令行构建

确保在构建之前安装外部依赖项(见上文)。

Solidity 项目使用 CMake 来配置构建。您可能想要安装ccache以加快重复构建。CMake 会自动选择它。在 Linux、macOS 和其他 Unices 上构建 Solidity 非常相似:

mkdir build
cd build
cmake .. && make

甚至在 Linux 和 macOS 上更简单,您可以运行:

#note: this will install binaries solc and soltest at usr/local/bin
./scripts/build.sh
警告
BSD 构建应该可以工作,但未经 Solidity 团队测试。

对于 Windows:

mkdir build
cd build
cmake -G "Visual Studio 16 2019" ..

如果您想使用​scripts\install_deps.ps1​安装的boost版本,还需要将​-DBoost_DIR="deps\boost\lib\cmake\Boost-*"​和​-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded​作为参数传递给​cmake​调用。

这应该会导致在该构建目录中创建solidity.sln 。双击该文件应该会导致 Visual Studio 启动。我们建议构建 Release 配置,但所有其他配置都可以。

或者,您可以在命令行上为 Windows 构建,如下所示:

cmake --build . --config Release