Como corrigir Arduino / PlatformIO undefined reference to `loop()'

Problema:

Ao tentar compilar seu projeto Arduino ou PlatformIO, você vê uma mensagem de erro como

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()'

Solução

Você não declarou uma função loop() no seu código fonte. Abra main.cpp ou seu arquivo de código fonte .ino e comece com a seguinte função loop() (vazia) que não faz nada:

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

Após você ter adicionado qualquer função void loop() { /* ... */} ao seu código fonte tente construir/fazer upload novamente e a mensagem de erro deve ter desaparecido.

Se você quiser, você também pode adicionar código como para imprimir uma mensagem para a porta serial toda vez que o loop é executado:

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