注意
本节不适用于solcjs,即使在命令行模式下使用也不适用。
Solidity存储库的构建目标之一是solidity solc命令行编译器。使用为您提供所有选项的说明。编译器可以生成各种输出,范围从简单的二进制文件和抽象语法树(解析树)上的汇编到气体使用的估计。如果您只想编译单个文件,则将其运行为打印二进制文件。如果你想获得一些更高级的输出变体,最好告诉它使用输出所有内容来分离文件。solc --helpsolc --bin sourceFile.solsolcsolc -o outputDirectory --bin --ast --asm sourceFile.sol
在部署合约之前,请在编译时激活优化程序。默认情况下,优化器将优化合约,假设在其生命周期内调用了200次。如果您希望初始合约部署更便宜并且后期功能执行更昂贵,请将其设置为。如果您期望许多事务并且不关心更高的部署成本和输出大小,请设置为较大的数字。solc --optimize --bin sourceFile.sol–runs=1–runs
命令行编译器将自动从文件系统读取导入的文件,但也可以通过prefix=path以下方式提供路径重定向:
solc github.com/ethereum/dapp-bin/=/usr/local/lib/dapp-bin/ file.sol
这实质上指示编译器搜索以github.com/ethereum/dapp-bin/under 开头的任何内容/usr/local/lib/dapp-bin。 solc不会读取位于重映射目标之外的文件系统中以及显式指定的源文件所在目录之外的文件,因此只有在添加为重新映射时才会起作用。import “/etc/passwd”;/=/
不允许使用空重映射前缀。
如果由于重映射而存在多个匹配,则选择具有最长公共前缀的匹配。
出于安全原因,编译器限制了它可以访问的目录。在命令行上指定的源文件的路径(及其子目录)和由重映射定义的路径允许用于导入语句,但其他所有内容都被拒绝。可以通过交换机允许其他路径(及其子目录)。–allow-paths /sample/path,/another/sample/path
如果您的合约使用库,您会注意到字节码包含表单的子字符串__ 53 a e a 86 b 7 d 70 b 31448 b 230 b 20 a e 141 a 537 53aea86b7d70b31448b230b20ae141a537 53aea86b7d70b31448b230b2