Problem:
You are trying to compile your C/C++ ESP8266/ESP32 firmware using the ESP-IDF framework. Your source code looks like this:
int main() { // ... }
but you only see an error message like this:
.platformio/packages/toolchain-xtensa32/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\esp-idf\esp32\libesp32.a(cpu_start.c.o):(.literal.main_task+0x18): undefined reference to `app_main' .platformio/packages/toolchain-xtensa32/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld.exe: .pio\build\nodemcu-32s\esp-idf\esp32\libesp32.a(cpu_start.c.o): in function `main_task': .platformio\packages\framework-espidf\components\esp32/cpu_start.c:540: undefined reference to `app_main' collect2.exe: error: ld returned 1 exit status *** [.pio\build\nodemcu-32s\firmware.elf] Error 1
Solution:
For the ESP-IDF framework, the main()
function needs to be named app_main()
:
int app_main() { // ... }
See PlatformIO ESP-IDF ESP32 blink example for a complete example.