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

Solana Rust NFT合约执行cargo build编译失败如何解决?

问题根源

你出现编译错误的核心原因是自定义构建脚本build.rs的逻辑完全错误:

  • cc crate的作用是编译C/C++源代码并将其静态链接到Rust项目,你将Rust源文件src/main.rs传入cc::Build::file()方法,相当于强制C编译器去编译Rust代码,C编译器无法识别Rust语法,自然不会生成预期的.o目标文件,后续ar命令打包时找不到文件就会抛出报错。
  • 普通Solana合约开发完全不需要自定义构建脚本,你额外添加的build.rs属于多余配置。

修复步骤

  • 直接删除项目根目录下的build.rs文件,如果你项目没有C语言绑定的需求,可以同步删除Cargo.toml中整个[build-dependencies]配置块。
  • Solana合约不能直接用cargo build编译,需要先安装官方Solana CLI工具后,执行cargo build-bpf命令编译为适配Solana链的BPF字节码.so文件,编译产物会默认输出到target/deploy/目录下,可直接用于链上部署。
  • 额外检查项目结构:Solana合约属于动态库类型,不是可执行二进制程序,你需要将src/main.rs重命名为src/lib.rs,并在Cargo.toml中添加如下配置指定库类型:
[lib]
crate-type = ["cdylib", "lib"]
name = "solana_nft"

合约的入口逻辑使用solana_program::entrypoint宏标注即可,不需要Rust二进制的main函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:04