安装Solidity编译器
人民干脆面
发表于 2022-12-26 19:05:01
217
0
0
Solidity的版本遵循 语义化版本原则,作为发布版本的补充, 每日开发构建 (nightly development builds)也是可用的。这个每日开发构建不保证能正常工作,尽管尽了最大的努力,但仍可能包含未记录的和/或重大的改动。我们推荐使用最新的发布版本。下面的包安装程序将使用最新发布版本。
Remix- {5 W( ~' o' V( n: G
我们推荐使用 Remix 来开发简单合约和快速学习 Solidity。, e0 F) m+ P! C+ s
Remix 可在线使用,而无需安装任何东西。如果你想离线使用,可按 https://github.com/ethereum/browser-solidity/tree/gh-pages 的页面说明下载 zip 文件来使用。 该页面有进一步详细说明如何安装 Solidity 命令行编译器到你计算机上。如果你刚好要处理大型合约,或者需要更多的编译选项,那么你应该选择使用命令行编译器 solc。/ m0 `0 u: x! _4 b( f% M! V2 x- K
npm / Node.js. G1 s2 @+ d/ S) d
使用 npm 可以便捷地安装Solidity编译器solcjs。但该 solcjs 程序的功能相对于本页下面的所有其他选项都要少。在 使用命令行编译器 一章中,我们假定你使用的是完整功能的编译器。 所以,如果你是从 npm 安装 solcjs ,就此打住,直接跳到 solc-js 去了解。
注意: solc-js 项目是利用 Emscripten 从 C++ 版的 solc 跨平台编译为 JavaScript 的,因此,可在 JavaScript 项目中使用 solcjs(如同 Remix)。 具体介绍请参考 solc-js 代码库。
npm install -g solc
在命令行中,使用 solcjs 而非 solc 。 solcjs 的命令行选项同 solc 和一些工具(如 geth )是不兼容的,因此不要期望 solcjs 能像 solc 一样工作。
Docker9 P; d* \: l4 B7 G( Y) G' G- K# N
我们为编译器提供了最新的docker构建。 stable 仓库里的是已发布的版本,nightly 仓库则是在开发分支中的带有不稳定变更的版本。
docker run ethereum/solc:stable solc --version
目前,docker 镜像只含有 solc 的可执行程序,因此你需要额外的工作去把源代码和输出目录连接起来。
二进制包' W3 d7 k) \& x7 n3 l* _
可在 solidity/releases 下载 Solidity 的二进制安装包。: W8 ^) F1 T4 R/ d" s ]
对于 Ubuntu ,我们也提供 PPAs 。通过以下命令,可获取最新的稳定版本:2 I( Y( Z* n& O+ D' ?
sudo add-apt-repository ppa:ethereum/ethereum0 t' V' |- d4 k* M1 V" G$ g4 T* t
sudo apt-get update
sudo apt-get install solc1 x, A: ~& K; @3 P! M
当然,你也可安装尝鲜的开发者版本:
sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev& g8 K1 z, V: t; e) B: e
sudo apt-get update
sudo apt-get install solc
同时,也提供可安装 所有支持的Linux版本 下的 snap package 。通过以下命令,可获取最新的稳定版本: w. N6 Z5 K1 ~" U
sudo snap install solc
或者,如果你想测试 develop 分支下的最新变更,可通过如下方式安装开发者版本:
sudo snap install solc --edge
同样,Arch Linux 也有提供安装包,但仅限于最新的开发者版本:( r2 L. d( Q6 d
pacman -S solidity2 D& t3 p; T4 H! \3 n! a
在写本文时,Homebrew 上还没有提供预构建的二进制包(因为我们从 Jenkins 迁移到了 TravisCI )。 我们将尽快提供 homebrew 下的二进制安装包,但至少从源码构建的方式还是行得通的:; h- K( Z$ ?- p( _$ n& F
brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity. y L3 n V/ F4 ~
如果你需要特定版本的 Solidity ,你需要从 Github 上安装一个 Homebrew formula。 你可查阅 solidity.rb commits on Github 的提交记录,去寻找包含solidity.rb文件改动的特殊提交。然后使用brew进行安装:8 h4 B1 [5 _3 E7 \( _8 \6 f
brew unlink solidity
# Install 0.4.8' e1 P! `3 j. _. ~/ t& f
brew install https://raw.githubusercontent.com/ethereum/homebrew-ethereum/77cce03da9f289e5a3ffe579840d3c5dc0a62717/solidity.rb, p) q {: h6 E1 K1 c. _/ ~' C& g
Gentoo Linux 下也提供了安装包,可使用 emerge 进行安装:: e0 C/ e& P" A5 d( B
emerge dev-lang/solidity
从源代码编译6 B1 V4 s [7 J
克隆代码库% F; V% |' A' p) M$ y
执行以下命令,克隆源代码:
git clone --recursive https://github.com/ethereum/solidity.git) Y6 z/ v& z$ |' O
cd solidity
如果你想参与 Solidity 的开发, 你可分叉 Solidity 源码库后,用你个人的分叉库作为第二远程源:
cd solidity
git remote add personal git@github.com:[username]/solidity.git' _" ?5 [+ o' z p/ i" L; t
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. k, v: S. S' r1 a
Solidity 在 OS X 下构建,必须 安装 Homebrew 包管理器来安装依赖。 如果你想从头开始,这里是 卸载 Homebrew 的方法。 j! g P/ P7 V: ]! j) f- k3 ^
先决条件 - Windows f. }. w. ?$ n
在Windows下构建Solidity,需下载的依赖软件包:0 ?- i$ b# p7 K7 b
Git for Windows C从Github上获取源码的命令行工具
CMake 跨平台构建文件生成器$ @5 F# A0 J: f& t; e z: d. `
Visual Studio 2017 Build Tools C++ 编译器
Visual Studio 2017 (Optional) C++ 编译器和开发环境- t$ P( {& L4 j0 f; B2 K" `2 T
如果你已经有了 IDE,仅需要编译器和相关的库,你可以安装 Visual Studio 2017 Build Tools。
Visual Studio 2017 提供了 IDE 以及必要的编译器和库。所以如果你还没有一个 IDE 并且想要开发 Solidity,那么 Visual Studio 2017 将是一个可以使你获得所有工具的简单选择。& i8 y1 J# Q2 h
这里是一个在 Visual Studio 2017 Build Tools 或 Visual Studio 2017 中应该安装的组件列表:6 h. m8 Z% N7 q0 a' t, \
Visual Studio C++ core featuresVC++ 2017 v141 toolset (x86,x64)Windows Universal CRT SDKWindows 8.1 SDKC++/CLI support3 G0 @4 q9 M5 o5 K
外部依赖
在 macOS、Windows和其他 Linux 发行版上,有一个脚本可以“一键”安装所需的外部依赖库。本来是需要人工参与的多步操作,现在只需一行命令:
./scripts/install_deps.sh7 G% ~5 D" T3 G. ~% t
Windows 下执行:
scripts\install_deps.bat
命令行构建
确保你已安装外部依赖(见上面)
Solidity 使用 CMake 来配置构建。Linux、macOS 和其他 Unix系统上的构建方式都差不多:, j" B1 ?* f1 |1 k
mkdir build8 x! W' \% |9 P# {/ S6 V4 [
cd build B) D# h5 y% ]0 H6 K/ H
cmake .. && make
也有更简单的:
#note: 将安装 solc 和 soltest 到 usr/local/bin 目录& M+ t+ ~3 V1 {0 B" Z& n# F2 R) Q
./scripts/build.sh
对于 Windows 执行:
mkdir build* I- M+ \3 A' [5 }
cd build
cmake -G "Visual Studio 15 2017 Win64" ..
这组指令的最后一句,会在 build 目录下创建一个 solidity.sln 文件,双击后,默认会使用 Visual Studio 打开。我们建议在VS上创建 RelWithDebugInfo 配置文件。
或者用命令创建:
cmake --build . --config RelWithDebInfo; B3 u1 c }$ W
CMake参数
如果你对 CMake 命令选项有兴趣,可执行 cmake .. -LH 进行查看。6 E6 T; s8 D* u6 Y3 [' D' s
版本号字符串详解& P- [1 k) n4 N9 ~' @
Solidity 版本名包含四部分:0 W% q9 ]& G# @9 n. T5 V/ A
版本号预发布版本号,通常为 develop.YYYY.MM.DD 或者 nightly.YYYY.MM.DD以commit.GITHASH格式展示的提交号由若干条平台、编译器详细信息构成的平台标识2 O+ X! G9 }# E* x2 z6 f
如果本地有修改,则 commit 部分有后缀 .mod。' T$ Q0 E- h8 M6 ^4 V
0 K* j; h. _ u, n
这些部分按照 Semver 的要求来组合, Solidity 预发布版本号等价于 Semver 预发布版本号, Solidity 提交号和平台标识则组成 Semver 的构建元数据。1 I8 [$ I" y+ [ q2 r" m
发行版样例:0.4.8+commit.60cc1668.Emscripten.clang.
预发布版样例: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang
版本信息详情+ \' U q( o- W6 m7 V/ f! h5 u. X
在版本发布之后,补丁版本号会增加,因为我们假定只有补丁级别的变更会在之后发生。当变更被合并后,版本应该根据semver和变更的剧烈程度进行调整。最后,发行版本总是与当前每日构建版本的版本号一致,但没有prerelease指示符。8 a3 ]# q; {! T5 s$ ]
例如:/ \& Z; ~% c, ] x' R8 S, H( X
0.4.0 版本发布
从现在开始,每晚构建为 0.4.1 版本+ V6 P/ k9 ^# u
引入非破坏性变更 —— 不改变版本号
引入破坏性变更 —— 版本跳跃到 0.5.00 x5 [% t" ^4 v. A* m: K
0.5.0 版本发布
该方式与 version pragma 一起运行良好。
成为第一个吐槽的人