HOWTO · Arduino

通过阅读实际错误修复 Arduino 退出状态 1

退出状态 1 是通用的失败结果。请阅读前面的诊断信息,并区分编译错误和上传问题。

exit status 1 是通用的失败结束提示,不是具体原因。请阅读它上方包含文件名和行号的第一条错误。如果编译成功而上传失败,应检查开发板、端口和引导程序,而不是修改已经能编译的代码。

找到真正的诊断信息

Compilation error: exit status 1ld returned 1 exit status 是报告末尾的概述。真正有用的原因在前面,例如 expected ';'was not declared in this scopeNo such file or directory。寻求帮助时应提供完整输出,而不仅是最后两行。Arduino 编译指南说明了如何阅读这些信息。

用最小草图验证

以下精确草图已经用 Arduino CLI 1.5.1、Arduino AVR Boards 1.8.8 和 arduino:avr:uno 编译:

void setup() {}

void loop() {}

对于 Uno,运行 arduino-cli compile --fqbn arduino:avr:uno <草图文件夹>;其他开发板请替换 FQBN。如果它也失败,请先选择正确的开发板,并在开发板管理器中安装其平台,再检查项目语法。

修复提示的错误

下面经过测试的草图会失败,因为 Serial.begin(9600) 后缺少分号:

void setup() {
  Serial.begin(9600)
}

void loop() {}

观察到的结果为 error: expected ';' before '}' token,随后是 Error during build: exit status 1。添加分号后重新编译。还要检查花括号、标识符拼写和变量作用域;报告的行可能在实际错误之后。

遇到 fatal error: SomeLibrary.h: No such file or directory 时,确认头文件名称和库文档,然后在 Sketch > Include Library > Manage Libraries 安装正确且兼容的库。仅把一个 .h 文件复制到草图旁并不会安装依赖或保证开发板兼容性。

将上传问题单独处理

如果“验证”成功而上传以 status 1 结束,这不是语法错误。确认开发板和端口,关闭正在使用该端口的串口监视器,重新连接开发板,并在适用时检查处理器或引导程序选项。请参阅 Arduino 上传指南。没有实体开发板和串口时,编译草图不能验证上传行为。