Как исправить Arduino / PlatformIO undefined reference to `loop()'

Проблема:

При попытке компиляции вашего проекта Arduino или PlatformIO вы видите сообщение об ошибке, например

linker_error_ld.txt
/home/uli/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: .pio/build/esp32dev/libFrameworkArduino.a(main.cpp.o):(.literal._Z8loopTaskPv+0x8): undefined reference to `loop()'

Решение

Вы не объявили функцию loop() в вашем исходном коде. Откройте main.cpp или ваш файл исходного кода .ino и начните со следующей (пустой) функции loop(), которая ничего не делает:

empty_loop_example.cpp
void loop() {
    // Nothing to do here since HTTPServer
    // is running in a separate thread
    delay(1000);
}

После добавления любой функции void loop() { /* ... */} в ваш исходный код попробуйте снова собрать/загрузить, и сообщение об ошибке должно исчезнуть.

Если хотите, вы также можете добавить код, например, для вывода сообщения в последовательный порт каждый раз при запуске цикла:

loop_with_serial_example.cpp
void loop() {
    // Nothing to do here since HTTPServer
    // is running in a separate thread
    Serial.println("Hello world!");
    delay(1000);
}

Check out similar posts by category: Arduino C/C++ PlatformIO