为什么“anchor build”和“Cargo build-bpf”显示错误的 rustc 版本?

问题描述 投票:0回答:3

我正在尝试使用 anchor build 构建 (

https://github.com/betterclever/solend-anchor
) 包,但是我收到以下错误

error: package `uint v0.9.3` cannot be built because it requires rustc 1.56.1 or newer, while the currently active rustc version is 1.56.0-dev

我更新了 rustc 并运行命令

rustup default nightly
显示:

info: using existing install for 'nightly-x86_64-apple-darwin'
info: default toolchain set to 'nightly-x86_64-apple-darwin'

  nightly-x86_64-apple-darwin unchanged - rustc 1.61.0-nightly 

所以它向我显示已安装和活动的 rustc 版本是 1.61,但是锚构建由于某种原因没有找到它。我也尝试运行 Cargo build-bpf 但同样的事情不断发生。

cargo build
似乎工作正常。 我想知道运行anchor build 和cargo build-bpf 时导致问题的原因是什么?

rust rust-cargo solana bpf anchor-solana
3个回答
4
投票

anchor build
cargo build-bpf
使用的编译器与系统中包含的普通
rustc
编译器不同,因此它们报告不同的版本是正常的。 BPF 编译器附带 Solana 工具套件。

如果您的计算机上已安装 Solana 工具,您只需运行:

solana-install init 1.9.13

如果你不这样做,你可以运行:

sh -c "$(curl -sSfL https://release.solana.com/v1.9.13/install)"

这将为您提供所有最新的工具,包括 BPF 编译器。


3
投票

我有 Solana 最新版本,我在编译下载的程序之一时遇到了同样的错误。 命令

solana-install update

为我工作。


0
投票

此问题通常发生的原因是 Solana BPF 工具链使用单独版本的 Rust

因此 BPF 工具链并不总是使用与系统默认版本相同的 Rust 版本,这就是为什么您在命令中看到不同的版本

rustc --version

以及锚点构建正在使用的版本。

要解决此问题,您需要确保 Solana BPF 工具链使用正确的 Rust 版本,您需要专门针对 BPF 更新 Rust 版本

您可以通过运行此命令来做到这一点

rustup toolchain install bpf --component rust-std --target bpfel-unknown-unknown

并设置 Anchor Build 的环境变量,将 BPF_RUSTC 环境变量设置为版本 1.69 的 Rust 安装的正确路径。

您可以通过将以下内容添加到 shell 配置文件(例如 .bashrc、.zshrc)来完成此操作:

export BPF_RUSTC=~/.rustup/toolchains/bpf/bin/rustc
© www.soinside.com 2019 - 2024. All rights reserved.