卡在编译中(substrate-node-template:make build )

Stuck in compilation (substrate-node-template:make build )

我是按照教程enter link description here走到这一步的,

 make build
 WASM_BUILD_TOOLCHAIN=nightly-2020-10-05 cargo build --release
       Compiling node-template-runtime v2.0.0 (/home/wangliqiu2021/CLionProjects/substrate-node-template/runtime)
 Building [=====================================================> ] 857/861: node-template-runtime(build) 

cargo执行了很久(差不多一个+小时)没有结束,好像卡住了,有谁知道原因吗?帮帮我

OS:Ubuntu 20.04

CPU: AMD Ryzen 7 1700 八核处理器

编译并没有卡在编译中,只是因为800+的依赖需要一点时间。来自@gnunicorn this github issue:

Rust isn't particular quick with the compiling at the moment and opaque to the person in front, at this step (when compiling node-template-runtime) we are actually building the project twice: once natively and once in wasm. So at some step in between it appears as if nothing happens and that can take up to half the total build time – if the other part took e.g. 10minutes then this process might take another 10min without any indicator of process (other than the CPU pumping hard).

您正在执行启用优化的发布版本 (cargo build --release)。出于开发目的,常规构建或只是 cargo check 会快得多。

链接的 GitHub 问题中的一些评论提到 运行 一个 cargo clean 和重建有助于加快编译时间,所以你也可以试试。

来自您的用户名。我觉得你和我一样在中国

node-template-runtime(build) 表示您正在将 运行time 编译到 wasm 文件中。在此期间,它可能需要下载(因此请尝试使用 VPN)。

下载仅发生在 1.0.0 https://docs.rs/substrate-wasm-builder/1.0.0/substrate_wasm_builder/?search=


此外,wasm 编译也需要很长时间(取决于您的硬件)。

在2016款MacBookPro中,整个编译需要30分钟。


此外,build.rs 中可能存在错误。有时我不得不 运行 cargo clean。如果我在 node-template-runtime(build).

时中断编译

找到原因了

$CARGO_HOME/config.toml:

[build]
target-dir = "target"

删除它。

在我的例子中,问题是 WASM 运行时构建期望在本地 target 目录中找到 WASM 文件。

如果构建在 target 目录中找不到本地 WASM 文件 - 它只会挂起或死锁(例如 GitHub issue)。

我必须更改 ~/.cargo/config.toml 中的 target-dir 设置。

您还可以使用本地环境变量覆盖全局设置:

CARGO_TARGET_DIR=target cargo build

或者您可以使用 cargo CLI 标志:

cargo build --target-dir=target

请注意,某些基于 wasm-builder 的构建脚本会忽略 CARGO_TARGET_DIR 环境变量(例如 wasm_project.rs)。