树莓派SSH环境下Arduino CLI缺失标准库,如何安装?
已通过SSH在树莓派上用arduino-cli完成基础闪烁程序烧写,但引入Arduino IDE默认自带的Wire.h、Servo.h、Firmata.h等标准库时,出现编译错误:
fatal error: Servo.h: No such file or directory
#include <Servo.h>
^~~~~~~~~
compilation terminated
已知第三方库可通过以下命令安装:
arduino-cli lib search <library> arduino-cli lib install <library>
但Wire、Servo这类标准库无法在搜索结果中找到,需要解决在纯SSH环境下(无需IDE或HDMI连接)添加这些库的方法,且不影响后续使用(arduino-cli通过指定教程安装)。
1. 安装对应开发板的核心板包
Wire、Servo这类属于Arduino的核心库,和第三方库不同,它们绑定在对应开发板的核心板包中,无法通过lib search搜到。首先确认你使用的开发板板包是否安装:
- 查看已安装板包:
arduino-cli core list
- 如果未找到目标板包(比如常用的AVR系列板对应
arduino:avr),执行安装命令:
arduino-cli core install arduino:avr
提示:替换arduino:avr为你实际使用的开发板板包标识,比如ESP32系列是esp32:esp32,可通过arduino-cli core search <板型关键词>查询具体标识
2. 验证核心库路径
安装板包后,核心库会自动存放在arduino-cli的系统库目录中。可通过以下命令查看配置的库路径:
arduino-cli config dump
找到directories.data对应的路径,核心库通常位于[data路径]/packages/[厂商]/hardware/[架构]/[版本]/libraries下。如果路径异常,可重新初始化配置:
arduino-cli config init
3. 手动补充核心库(仅当上述步骤无效时)
如果板包安装后仍无法识别库,可从装有Arduino IDE的设备上,找到对应板包的核心库文件夹(比如Windows下路径为C:\Users\<用户名>\AppData\Local\Arduino15\packages\arduino\hardware\avr\<版本>\libraries),通过SCP命令传到树莓派的用户库目录:
- 树莓派用户库路径一般为
~/.arduino15/libraries或~/Arduino/libraries,可通过arduino-cli lib list确认。 - SCP传输示例(本地到树莓派):
scp -r /本地电脑的Servo库路径 pi@你的树莓派IP:~/.arduino15/libraries/
4. 验证安装结果
执行以下命令查看已识别的库列表,确认Wire、Servo等核心库已存在:
arduino-cli lib list
之后重新编译你的程序即可正常调用这些库。
内容的提问来源于stack exchange,提问作者aihustle

