solidity 從源代碼構(gòu)建

2022-05-10 17:07 更新

先決條件 - 所有操作系統(tǒng)

以下是所有 Solidity 構(gòu)建的依賴(lài)項(xiàng):

軟件

筆記

CMake(版本 3.13+)

跨平臺(tái)構(gòu)建文件生成器。

Boost(Windows 上的版本 1.77+,其他系統(tǒng)為 1.65+)

C++ 庫(kù)。

Git

用于檢索源代碼的命令行工具。

z3(4.8+ 版,可選)

與 SMT 檢查器一起使用。

cvc4(可選)

與 SMT 檢查器一起使用。

筆記
0.5.10 之前的 Solidity 版本可能無(wú)法正確鏈接到 Boost 版本 1.70+。 一種可能的解決方法是在運(yùn)行 cmake 命令配置solidity 之前臨時(shí)重命名<Boost install path>/lib/cmake/Boost-1.70.0。
從 0.5.10 開(kāi)始,與 Boost 1.70+ 的鏈接應(yīng)該可以在沒(méi)有人工干預(yù)的情況下工作。
筆記
默認(rèn)構(gòu)建配置需要特定的 Z3 版本(上次更新代碼時(shí)的最新版本)。Z3 版本之間引入的更改通常會(huì)導(dǎo)致返回的結(jié)果略有不同(但仍然有效)。我們的 SMT 測(cè)試沒(méi)有考慮到這些差異,并且可能會(huì)因與編寫(xiě)它們的版本不同的版本而失敗。這并不意味著使用不同版本的構(gòu)建是錯(cuò)誤的。如果將-DSTRICT_Z3_VERSION=OFF選項(xiàng)傳遞給 CMake,則可以使用滿(mǎn)足上表中給出的要求的任何版本進(jìn)行構(gòu)建。但是,如果您這樣做,請(qǐng)記住傳遞?--no-smt? 跳過(guò) SMT 測(cè)試的?scripts/tests.sh?選項(xiàng)。

最低編譯器版本

以下 C++ 編譯器及其最低版本可以構(gòu)建 Solidity 代碼庫(kù):

先決條件 - macOS

對(duì)于 macOS 構(gòu)建,請(qǐng)確保您安裝了最新版本的 Xcode。這包含Clang C++ 編譯器、 Xcode IDE和其他在 OS X 上構(gòu)建 C++ 應(yīng)用程序所需的 Apple 開(kāi)發(fā)工具。如果您是第一次安裝 Xcode,或者剛剛安裝了新版本,那么您需要同意進(jìn)行命令行構(gòu)建之前的許可證:

sudo xcodebuild -license accept

我們的 OS X 構(gòu)建腳本使用Homebrew 包管理器來(lái)安裝外部依賴(lài)項(xiàng)。如果您想從頭開(kāi)始,這里是卸載 Homebrew的方法。

先決條件 - Windows

您需要為 Solidity 的 Windows 版本安裝以下依賴(lài)項(xiàng):

軟件

筆記

Visual Studio 2019 構(gòu)建工具

C++ 編譯器

Visual Studio 2019 (可選)

C++ 編譯器和開(kāi)發(fā)環(huán)境。

Boost(版本 1.77+)

C++ 庫(kù)。

如果您已經(jīng)有一個(gè) IDE 并且只需要編譯器和庫(kù),則可以安裝 Visual Studio 2019 構(gòu)建工具。

Visual Studio 2019 提供 IDE 和必要的編譯器和庫(kù)。因此,如果您沒(méi)有 IDE 并且更喜歡開(kāi)發(fā) Solidity,Visual Studio 2019 可能是您輕松完成所有設(shè)置的選擇。

以下是應(yīng)在 Visual Studio 2019 構(gòu)建工具或 Visual Studio 2019 中安裝的組件列表:

  • Visual Studio C++ 核心功能

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

  • Windows 通用 CRT SDK

  • Windows 8.1 SDK

  • C++/CLI 支持

我們有一個(gè)幫助腳本,您可以使用它來(lái)安裝所有必需的外部依賴(lài)項(xiàng):

scripts\install_deps.ps1

這將安裝?boost?和cmake到?deps?子目錄。

克隆存儲(chǔ)庫(kù)

要克隆源代碼,請(qǐng)執(zhí)行以下命令:

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

如果您想幫助開(kāi)發(fā) Solidity,您應(yīng)該分叉 Solidity 并將您的個(gè)人分叉添加為第二個(gè)遠(yuǎn)程地址:

git remote add personal git@github.com:[username]/solidity.git
筆記
此方法將導(dǎo)致預(yù)發(fā)布版本,例如在此類(lèi)編譯器生成的每個(gè)字節(jié)碼中設(shè)置一個(gè)標(biāo)志。如果您想重新構(gòu)建已發(fā)布的 Solidity 編譯器,請(qǐng)使用 github 發(fā)布頁(yè)面上的源代碼 tarball:
https://github.com/ethereum/solidity/releases/download/v0.XY/solidity_0.XYtar.gz
(不是github提供的“源代碼”)。

命令行構(gòu)建

確保在構(gòu)建之前安裝外部依賴(lài)項(xiàng)(見(jiàn)上文)。

Solidity 項(xiàng)目使用 CMake 來(lái)配置構(gòu)建。您可能想要安裝ccache以加快重復(fù)構(gòu)建。CMake 會(huì)自動(dòng)選擇它。在 Linux、macOS 和其他 Unices 上構(gòu)建 Solidity 非常相似:

mkdir build
cd build
cmake .. && make

甚至在 Linux 和 macOS 上更簡(jiǎn)單,您可以運(yùn)行:

#note: this will install binaries solc and soltest at usr/local/bin
./scripts/build.sh
警告
BSD 構(gòu)建應(yīng)該可以工作,但未經(jīng) Solidity 團(tuán)隊(duì)測(cè)試。

對(duì)于 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?作為參數(shù)傳遞給?cmake?調(diào)用。

這應(yīng)該會(huì)導(dǎo)致在該構(gòu)建目錄中創(chuàng)建solidity.sln 。雙擊該文件應(yīng)該會(huì)導(dǎo)致 Visual Studio 啟動(dòng)。我們建議構(gòu)建 Release 配置,但所有其他配置都可以。

或者,您可以在命令行上為 Windows 構(gòu)建,如下所示:

cmake --build . --config Release


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)