当我拥有最新的 rustc 和 cargo 版本时,为啥我会收到解析器功能的构建错误?
Posted
技术标签:
【中文标题】当我拥有最新的 rustc 和 cargo 版本时,为啥我会收到解析器功能的构建错误?【英文标题】:Why do I get a build error for the resolver feature when I have up to date rustc and cargo version?当我拥有最新的 rustc 和 cargo 版本时,为什么我会收到解析器功能的构建错误? 【发布时间】:2021-10-12 08:52:52 【问题描述】:当我运行构建命令时
cargo build-bpf --manifest-path=Cargo.toml --bpf-out-dir=dist/program
错误:下载失败solana-frozen-abi v1.7.9
原因: 无法从源获取包
原因:
无法解析 /home/USER/.cargo/registry/src/github.com-1ecc6299db9ec823/solana-frozen-abi-1.7.9/Cargo.toml
的清单
原因:
功能 resolver
是必需的
有人遇到类似问题,但原因是旧的 rustc 版本。我的看起来不错
rustc --version
rustc 1.55.0-nightly (7c3872e6b 2021-06-24)
cargo --version
cargo 1.55.0-nightly (9233aa06c 2021-06-22)
我的 Cargo.toml 文件看起来像
[package]
name = "test"
version = "0.0.1"
edition = "2018"
exclude = ["tests/**"]
[features]
no-entrypoint = []
test-bpf = []
[dependencies]
borsh = "0.8.2"
num-derive = "0.3"
num-traits = "0.2"
solana-program = "1.6.10"
spl-token = version="3.1.1", features = [ "no-entrypoint" ]
thiserror = "1.0"
[dev-dependencies]
solana-program-test = "1.6.10"
solana-sdk = "1.6.10"
[lib]
crate-type = ["cdylib", "lib"]
我已经下载了 metaplex rust 代码(完全一样的依赖)并且 build bpf 命令编译成功。
我也尝试过运行 cargo clean ,它不会改变任何东西。
【问题讨论】:
这是由于 cargo.lock 中的依赖关系 【参考方案1】:来自 Cargo.toml 的相同输入并不意味着 Rust 构建可以在其他机器上重复 - Cargo.lock 包含使用的确切版本。此外,cargo clean
不会删除 Cargo.lock
https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
【讨论】:
【参考方案2】:我通过更新到 Solana 的最新版本 (1.7.9)(不是发布版本)来修复它:
sh -c "$(curl -sSfL https://release.solana.com/v1.7.9/install)"
【讨论】:
以上是关于当我拥有最新的 rustc 和 cargo 版本时,为啥我会收到解析器功能的构建错误?的主要内容,如果未能解决你的问题,请参考以下文章
【RUST_BASIC】Rust for Linux环境搭建