【问题标题】:build failed with first substrate chain第一个基板链构建失败
【发布时间】:2021-06-08 19:37:49
【问题描述】:

想根据他们的指南 [1] 一步一步创建我的第一个底物链:https://substrate.dev/docs/en/tutorials/create-your-first-substrate-chain/

运行这个命令:cargo build --release 但得到这个错误:

    Compiling sc-chain-spec v3.0.0
    The following warnings were emitted during compilation:

warning: Assembler messages:
warning: Error: can't open /tmp/cc02CgnB.s for reading: No such file or directory

error: failed to run custom build command for     librocksdb-sys v6.11.4

Caused by:
  process didn't exit successfully:     ~/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-8abff3284793cb9b/build-script-build (exit code: 1)
  --- stdout
  cargo:rerun-if-changed=rocksdb/
  TARGET = Some("x86_64-unknown-linux-gnu")
  OPT_LEVEL = Some("3")
  HOST = Some("x86_64-unknown-linux-gnu")
  CXX_x86_64-unknown-linux-gnu = None
  CXX_x86_64_unknown_linux_gnu = None
  HOST_CXX = None
  CXX = None
  CXXFLAGS_x86_64-unknown-linux-gnu = None
  CXXFLAGS_x86_64_unknown_linux_gnu = None
  HOST_CXXFLAGS = None
  CXXFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
 
 -- stderr

  error occurred: Command "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++11" "-Wno-unused-parameter" "-msse2" "-msse4.1" "-msse4.2" "-mpclmul" "-DSNAPPY=1" "-DNDEBUG=1" "-DHAVE_SSE42=1" "-DHAVE_PCLMUL=1" "-DOS_LINUX=1" "-DROCKSDB_PLATFORM_POSIX=1" "-DROCKSDB_LIB_IO_POSIX=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-1d9c3f88cabe429f/out/rocksdb/db/memtable.o" "-c" "rocksdb/db/memtable.cc" with args "c++" did not execute successfully 
(status code exit code: 1)

【问题讨论】:

  • 看来问题与最后一行的 c++ 命令有关

标签: c++ c++11 rust compiler-errors substrate


【解决方案1】:

在基于 Arch 的 linux 中,您需要这些先决条件:

导出 OPENSSL_LIB_DIR="/usr/lib/openssl-1.0"

导出 OPENSSL_INCLUDE_DIR="/usr/include/openssl-1.0"

对于其他 ose,请查看 ./docs/rust-setup.md

【讨论】:

    【解决方案2】:

    WASM_BUILD_TOOLCHAIN=nightly-x86_64-unknown-linux-gnu cargo build --release 应该不需要包含 WASM nightly 工具链,这可能对于基板 v2.0 是必需的,但对于基板 v3.0 不再需要

    请关注guide here,搭建[node template v3.0:

    git clone -b v3.0.0 --depth 1 https://github.com/substrate-developer-hub/substrate-node-template
    
    cd substrate-node-template
    
    # NOTE: you should always use the `--release` flag
    cargo build --release
    # ^^ this will take a while to do a release build!
    

    【讨论】:

    • 起初我尝试了这个,但后来我尝试了我问题中的版本
    • 另一个惊人的技巧是它可以在调试模式下完美无误地运行区块链并连接到 ui
    • 所以您使用的是 v3.0.0 并且现在运行良好?
    • 完全没有,因为rocksdb模块中的c++编译错误,这似乎是我的机器相关问题,没有人帮忙
    • 您的完整机器规格和您使用的所有软件的版本是什么?所有必需的:substrate.dev/docs/en/knowledgebase/getting-started
    【解决方案3】:

    尝试使用 with-parity-db 功能进行编译,这样 Rocksdb 就不会被编译。

    如果您想要轻松的生活,请在结帐目录中运行 nix-shell,它将安装所有必需的依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2013-12-06
      • 2014-01-26
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多