在使用anchor build项目的时候,遇到以下错误:
error: package `solana-program v1.18.3` cannot be built because it requires rustc 1.72.0 or newer, while the currently active rustc version is 1.68.0-dev
Either upgrade to rustc 1.72.0 or newer, or use
cargo update -p solana-program@1.18.3 --precise ver
where `ver` is the latest version of `solana-program` supporting rustc 1.68.0-dev
要求两个环境变量:
一个是solana安装的版本;可以使用solana -V查看:
~/Doc/solana/zhuhai/hello_world on master ?12 solana -V 1 err at 21:06:05
solana-cli 1.17.24 (src:ee1365a9; feat:3580551090, client:SolanaLabs)
一个是rust toolchain, 使用rustup show 查看
~/Doc/so/z/hello_world on master ?12 rustup show ok took 59s at 20:53:06
Default host: aarch64-apple-darwin
rustup home: /Users/hanpeng/.rustup
installed toolchains
--------------------
stable-aarch64-apple-darwin (default)
nightly-aarch64-apple-darwin
solana
1.68.0-aarch64-apple-darwin
installed targets for active toolchain
--------------------------------------
aarch64-apple-darwin
wasm32-unknown-unknown
active toolchain
----------------
stable-aarch64-apple-darwin (default)
rustc 1.76.0 (07dca489a 2024-02-04)
先说怎么看: active toolchian下边会展示你真在使用的active的toolchain,在它下边会展示这个toolchain的rustc的版本。
其实rust toolchain这里default选的哪个不重要,多实验几次你就会发现,solana程序默认运行的是solana的toolchain ,所以即使我这里用的1.76.0的rustc,已经大于了他要求的1.72.0,依然anchor build 不起来。因为solana toolchain依然是rustc 1.68.0-dev
解决方法就是通过solana-install init 1.18.1
命令升级solana版本,版本自己选,不一定非1.18.1,
再次查看solana 的rustc已经升级,可以完成anchor build命令。
这里可能会有延迟,我升级1.18.1后立马查看了一次rustup show 发现版本还没变,第二次查看的时候才真正完成了升级。
另外只要solana toolchain更新了就行,你可以将default toolchain设置为你原来的。因为 你这里选哪个作为default ,solana都会默认运行solana的。
参考:
https://solana.stackexchange.com/questions/9798/error-building-program-with-solana-program-v1-18-and-cli-v1-17/9799
https://reebug.com/