You need to enable JavaScript to run this app. rustc与cargo版本正常,运行cargo build-bpf报resolver特性错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

rustc与cargo版本正常,运行cargo build-bpf报resolver特性错误如何解决

问题根因
  • 核心原因是cargo build-bpf不会使用你系统安装的Rust工具链,它会调用Solana CLI内置的独立Rust工具链,该内置工具链的Cargo版本较低,不支持Cargo.toml中使用的resolver新特性。
  • 你项目中显式依赖的solana-program = "1.6.10"没有锁死间接依赖版本,Cargo默认按照语义化版本规则自动拉取了更高版本的solana-frozen-abi v1.7.9,这个版本的Cargo.toml使用了resolver特性,触发内置旧Cargo的解析报错。
  • 你参考的Metaplex代码可正常编译是因为它的仓库中自带了Cargo.lock文件,锁定了所有间接依赖的版本为1.6.x分支,不会自动拉取1.7.9版本的依赖包。
修复方案
  • 方案1:降级Solana CLI版本到v1.6.10,和项目依赖的solana-program版本完全对齐,避免内置工具链和依赖版本不匹配的问题,完成降级后重新执行构建命令即可。
  • 方案2:在你项目的Cargo.toml末尾添加强制覆盖依赖的配置,锁死所有solana相关间接依赖的版本:
[patch.crates-io]
solana-frozen-abi = { version = "=1.6.10" }
solana-frozen-abi-macro = { version = "=1.6.10" }
solana-program = { version = "=1.6.10" }
solana-sdk = { version = "=1.6.10" }
solana-program-test = { version = "=1.6.10" }

添加后重新执行构建命令,Cargo会强制使用1.6.10版本的所有solana相关依赖,不会拉取1.7.9版本。

  • 方案3:将Metaplex代码库中的Cargo.lock文件复制到你当前项目的根目录,再执行构建,Cargo会直接读取lock文件中锁定的依赖版本,不需要重新解析拉取新版本。

内容的提问来源于stack exchange,提问作者wxecqz123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 04:48:01