You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遭遇Anchor与rustc版本不兼容问题求助

解决Anchor开发中rustc与solana-program版本不兼容问题

方案一:升级Rust到兼容版本(彻底解决)

这是最直接的处理方式,错误提示明确说明solana-program v1.18.20需要rustc 1.75.0及以上版本,当前版本不满足要求:

  • 执行Rust升级命令:rustup update stable
  • 验证升级结果:rustc --version,确认输出版本为1.75.0或更高
  • 重新运行anchor build即可,后续新增依赖或创建新项目都不会再触发该版本冲突

方案二:固定Solana与Anchor的兼容版本(不想升级Rust时使用)

如果暂时不想升级Rust,需要将Solana和Anchor版本锁定到与rustc 1.72.0-dev兼容的范围(比如Solana 1.17.x系列):

  • 全局安装指定Solana版本:solana-install init 1.17.17(选择1.17系列的最新稳定版)
  • 创建新项目时指定兼容的Anchor版本:anchor init my_project --anchor-version 0.29.0(Anchor 0.29.x与Solana 1.17.x完全兼容)
  • 已有项目修改Cargo.toml,把所有Solana相关依赖的版本固定为1.17.x,示例:
    solana-program = "=1.17.17"
    solana-sdk = "=1.17.17"
    anchor-lang = "=0.29.0"
    
  • 执行rm Cargo.lock && cargo update,重新生成依赖锁文件后运行anchor build

方案三:用rustup为项目单独指定Rust版本(多版本场景适配)

如果同时维护多个需要不同Rust版本的项目,可以给当前Anchor项目单独配置工具链:

  • 安装指定版本的Rust:rustup install 1.75.0
  • 在项目根目录创建rust-toolchain.toml文件,写入以下内容:
    [toolchain]
    channel = "1.75.0"
    components = ["rustfmt", "clippy"]
    target = ["wasm32-unknown-unknown"]
    
  • 之后每次进入该项目目录,rustup会自动切换到1.75.0版本,避免版本冲突

为什么之前的临时方法无效?

删除cargo.lock后执行cargo add solana-program@=1.17.0只能临时将依赖拉到兼容版本,但新增依赖或创建新项目时,Cargo默认会拉取最新版的Solana/Anchor依赖,而最新版又要求更高的Rust版本,因此冲突会反复出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:25:03