Solidity 编译器如何按平台安装并跑通第一次编译?
Solidity 编译器如何按平台安装并跑通第一次编译【免费下载链接】soliditySolidity, the Smart Contract Programming Language项目地址: https://gitcode.com/GitHub_Trending/so/solidity刚接触 Solidity 开发时第一件事是把编译器solc装到自己的环境里然后编译一份自己的合约源码确认输出的字节码是完整的。docs/installing-solidity.rst 给出了按平台区分的安装路径浏览器端的 Remix、npm 全局安装、Docker 镜像、Linux 独立二进制、macOS Homebrew以及从源码构建。docs/using-the-compiler.rst 则说明安装完成后如何用solc命令行完成一次编译并检查输出。选安装方式前先分两种情况小合约、快速上手官方推荐 Remix在线使用无需安装任何东西Remix Desktop 可离线运行如果做的是较大的合约、需要更多编译选项就使用功能完整的命令行编译器solc。下面的步骤以命令行编译器为主线。按平台选择安装方式Linux优先使用独立静态二进制官方为各受支持平台维护了静态构建仓库solc-bin内容同时镜像在binaries.soliditylang.org上可通过 HTTPS 直接下载无需认证。这些二进制“应能在大多数发行版上无需额外安装步骤直接运行”不需要安装或解压早期捆绑了 DLL 的 Windows 构建除外。下载方式solc-bin仓库里每个平台对应一个顶层目录目录内的list.json列出可用二进制包含文件名、版本号以及keccak256和sha256两个校验值。下载后可以用keccak256sum工具sha3sum项目提供计算本地哈希并与list.json中的值比对确认文件完整性。需要注意的几个限制Ubuntu PPAethereum/ethereum只覆盖到 0.8.30官方已停止这种方式后续版本不会加入。社区维护的 ArchAUR、Nix 脚本并非官方审查使用时要谨慎。snap包目前处于无人维护状态。如果仍要使用命令是sudo snap install solc但它采用严格沙箱strict confinement只能访问/home和/media下的文件。macOS通过 Homebrew 安装Homebrew 公式ethereum/ethereum提供的是从源码构建的版本目前不支持预编译 bottlebrew update brew upgrade brew tap ethereum/ethereum brew install solidity如果要安装较旧的 0.4.x / 0.5.x可以用brew install solidity4或brew install solidity5。通用方案Docker 镜像不需要在宿主机装编译器时可以直接拉取官方镜像stable标签对应最新正式版本nightly对应develop分支上可能不稳定的构建docker run ghcr.io/argotorg/solc:stable --help这条命令会拉取镜像本地没有时并运行--help是验证镜像可用的最短方式。需要固定版本时把标签换成具体版本号例如ghcr.io/argotorg/solc:0.8.23。Node.js 项目npm 安装 solcjsnpm install --global solc装好的命令行可执行文件叫solcjs由 C 版solc经 Emscripten 派生两者使用同一份编译器源码可直接用于 Remix 之类的 JavaScript 项目。但要注意solcjs功能比完整版少且它的命令行选项与solc不兼容——期望solc行为的外部工具如geth无法配合solcjs工作。如果主路径是命令行编译合约优先选solc而非solcjs。可选分支从源码构建Windows 的主要路径文档中 Windows 没有现成的包安装说明走的是源码构建路径。前置依赖所有平台通用CMakeWindows 需 3.21.3其他系统 3.13、BoostWindows 需 1.77其他系统 1.83、Gitz34.8.16可选SMT checker 用。C 编译器最低要求GCC 13.3、Clang 18.1.3 或 MSVC 2019。macOS 还需最新 Xcode 并接受许可sudo xcodebuild -license acceptWindows 需 Visual Studio 2019 Build Tools 或 Visual Studio 2019仓库提供辅助脚本scripts\install_deps.ps1把boost和cmake装到deps子目录。Linux / macOS 上构建最简流程git clone --recursive https://github.com/argotorg/solidity.git cd solidity mkdir build cd build cmake .. make或者直接用仓库自带脚本副作用最后会执行sudo make install把solc和soltest安装到/usr/local/bin见 scripts/build.sh./scripts/build.shWindows 上在build目录执行cmake -G Visual Studio 16 2019 ..生成solidity.sln后用 Visual Studio 构建 Release 配置或命令行cmake --build . --config Release。注意直接克隆仓库构建出来的是 pre-release 构建其字节码会带上 pre-release 标记想复刻某个已发布版本应使用 GitHub release 页上的源码 tarball不是 GitHub 自动生成的 Source code。跑通第一次编译安装完成后先用solc --help确认命令可用——文档说明该选项会列出全部编译选项。然后准备一份合约源码。下面是仓库 README.md 中的示例合约保存为HelloWorld.sol// SPDX-License-Identifier: MIT pragma solidity 0.6.0 0.9.0; contract HelloWorld { function helloWorld() external pure returns (string memory) { return Hello, World!; } }首行的版本 pragma 很重要它不会改变编译器版本而是让编译器检查自身版本是否落在范围内不匹配时编译器会报错规则与示例见 docs/layout-of-source-files.rst。最简编译命令solc --bin HelloWorld.sol只编译单个文件时--bin会把字节码直接打印到终端。想同时拿到多种输出并写入文件时文档建议改为solc -o outputDirectory --bin --ast-compact-json --asm HelloWorld.sol几个按需在第一次编译时加上的选项--optimize开启优化器部署合约前建议开启。默认假设合约生命周期内被调用 200 次可用--optimize-runsN调整想让部署更便宜就用低值如 1预期高频调用就用高值。--evm-version VERSION指定目标 EVM 版本。当前默认是osakaamsterdam为实验性目标。用solc --evm-version cancun HelloWorld.sol这类方式可针对旧网络。文档警告EVM 版本选错会导致字节码行为异常甚至失败跑私链时务必让两边版本一致。使用 Docker 镜像编译宿主机上的文件时把输入输出目录挂载进容器docker run \ --volume /tmp/some/local/path/:/sources/ \ ghcr.io/argotorg/solc:stable \ /sources/Contract.sol \ --abi \ --bin \ --output-dir /sources/output/其中/tmp/some/local/path/换成你本地放.sol文件的实际目录Contract.sol换成实际文件名。验证编译结果与已知限制字节码输出solc --bin打印的是十六进制字节码内容本身不易阅读。想检查生成的逻辑时文档建议用--asm查看汇编输出并说明对大型合约做改动前后的汇编 diff 也很有参考价值。docs/analysing-compilation-output.rst 给出了solc --asm contract.sol的示例输出开头形如 contract.sol:C 和EVM assembly:的汇编块注意那是文档示例实际输出会随编译器版本和你的合约内容不同。版本不匹配如果报错提示 pragma 与编译器版本冲突按错误信息把 pragma 范围调整到覆盖当前solc版本或换用匹配版本编译Docker 换镜像标签、静态二进制换list.json里的版本条目即可。部署前的版本选择文档建议部署合约时使用最新的正式发布版本因为破坏性变更、新特性和修复会持续引入prerelease 和 nightly 构建面向尝鲜和反馈可能包含未记录或损坏的变更不适用于生产。完成上面这一步后你已经有了按平台安装solc、验证命令可用、编译出字节码的完整路径。后续如果要接入工具链文档推荐的进阶接口是--standard-json从标准输入读 JSON、向标准输出写 JSON进程始终以“成功”状态结束、错误都在 JSON 里报告相关字段说明同样在 docs/using-the-compiler.rst 中。【免费下载链接】soliditySolidity, the Smart Contract Programming Language项目地址: https://gitcode.com/GitHub_Trending/so/solidity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →