本文原文
打算用 Rust 给树莓派的风扇写个温控的小程序,达到肯定的阈值之后才启动风扇。不过在搭建环境的时候遇到了点问题(次要是 rust-analyzer,以下简称 ra),在这里分享一下怎么在树莓派上(armv7)应用 ra。(我是通过 VSCode 的 SSH Remote 连贯上树莓派进行开发的。)
编译
首先咱们要解决编译的问题,因为官网的 release 上是没有 arm 相干的 pre-built,因而咱们须要拉去它的代码库而后本人编译。记得要先把 rust 的工具链(最新)以及 NodeJS(我用的 14)和 npm 装置好。
git clone https://github.com/rust-analyzer/rust-analyzer.git
cd rust-analyzer
cargo xtask build --server
而后咱们就能够在 ~/.cargo/bin
下失去rust-analyzer
。
批改插件
编译好了之后会发现,VSCode 的 ra 插件还是提醒谬误,就是
Unfortunately we don't ship binaries for your platform yet.[巴拉巴拉,以下疏忽]
咱们要对插件代码进行一点批改,找到 ~/.vscode-server/extensions/matklad.rust-analyzer-*/out/src/main.js
,*
为版本号。
而后找到这么一坨代码
咱们须要筹备三个变量
- process.arch
- process.platform
- rust-toolchain
前两个获取形式是
node
process.arch // 我的后果是 arm
process.platform // 我的后果是 linux
第三个变量的获取形式是
rustup toolchain list
找到以后正在应用的工具链,比方我的输入是
stable-armv7-unknown-linux-gnueabihf (default)
那么我的 rust-toolchain
变量就应该是armv7-unknown-linux-gnueabihf
。
而后咱们批改platforms
,减少一个键值对,
"{process.arch} {process.platform}": "{rust-toolchain}"
以我的变量为例,后果就是
"arm linux": "armv7-unknown-linux-gnueabihf"
批改的后的代码如下
复制 ra 到插件目录
把 ra 重命名成 rust-analyzer-{rust-toolchain}
,复制到~/.vscode-server/data/User/globalStorage/matklad.rust-analyzer
下。
同样以我的 rust-toolchain
变量为例,那么复制命令是
cp ~/.cargo/bin/rust-analyzer ~/.vscode-server/data/User/globalStorage/matklad.rust-analyzer/rust-analyzer-armv7-unknown-linux-gnueabihf
实现
当初近程连贯上树莓派 ra 应该就是能够失常工作了。