Arduino.h include error for ESP8266 only

I am going back to modify an old ESP8266 project that worked about 2 years ago. Now I get this error in the main.cpp window.

#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (X:\Documents\PlatformIO\Projects\ESP8266_Seedlings\src\main.cpp).C/C++(1696)
cannot open source file "utility" (dependency of "Arduino.h")C/C++(1696)

The build also fails not finding
“include utility” which agrees with the error message in the main.cpp window.

Same error with the 210220-222338-arduino-blink project example.

I have been using Platformio for other projects so maybe some compiler path is messed up.

Other projects using the atmelsam platform include the same arduino.h but build without errors. It uses the windows-gcc-arm compiler instead of the windows-gcc-x64 compiler.

Here is my platformio.ini file

[env:esp12e]
platform = espressif8266
board = nodemcuv2
framework = arduino

The PlatformIO version is Core 5.1.0 and Home 3.3.3

You should first try and update everything. In a CLI, do a pio platform update to update all platforms.

You shoul then build the project first, even if there are IntelliSense ‘errors’. PlatformIO is the buil system and may download stuff at a later point where the IntelliSense doesn’t see it yet.

If there is a compile error, post it. Otherwise the issue shoul have been resolve automatically.

I performed pio platform update . Only an unrelated platform was out of date.
The IntelliSense error message is the same
The build error is the same. Here the first compile error:

Processing esp12e (platform: espressif8266; board: nodemcuv2; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
PLATFORM: Espressif 8266 (2.6.3) > NodeMCU 1.0 (ESP-12E Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 3.20704.0 (2.7.4)
 - tool-esptool 1.413.0 (4.13)
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa 2.40802.200502 (4.8.2)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 44 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\esp12e\src\main.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Crypto.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp-frag.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp-version.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FS.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FSnoop.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FunctionalInterrupt.cpp.o
In file included from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Arduino.h:238:0,
                 from src\main.cpp:2:
c:\users\graham smith\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\algorithm:60:30: fatal error: utility: No such file or directory
 #include <utility> // UK-300.
                              ^
compilation terminated.
In file included from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Arduino.h:238:0,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Crypto.h:29,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Crypto.cpp:26:
c:\users\graham smith\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\algorithm:60:30: fatal error: utility: No such file or directory
 #include <utility> // UK-300.
                              ^
compilation terminated.
*** [.pio\build\esp12e\FrameworkArduino\Crypto.cpp.o] Error 1
*** [.pio\build\esp12e\src\main.cpp.o] Error 1
In file included from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\coredecls.h:32:0,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Esp-frag.cpp:23:
c:\users\graham smith\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\functional:48:28: fatal error: bits/c++config.h: No such file or directory
 #include <bits/c++config.h>
                            ^
compilation terminated.
*** [.pio\build\esp12e\FrameworkArduino\Esp-frag.cpp.o] Error 1
In file included from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Arduino.h:238:0,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Esp-version.cpp:21:
c:\users\graham smith\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\algorithm:60:30: fatal error: utility: No such file or directory
 #include <utility> // UK-300.
                              ^
compilation terminated.
*** [.pio\build\esp12e\FrameworkArduino\Esp-version.cpp.o] Error 1
In file included from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266/Arduino.h:238:0,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Esp.h:24,
                 from C:\users\graham smith\.platformio\packages\framework-arduinoespressif8266\cores\esp8266\Esp.cpp:21:
c:\users\graham smith\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2\algorithm:60:30: fatal error: utility: No such file or directory
 #include <utility> // UK-300.
                              ^
compilation terminated.

Remove this folder plus c:\users\graham smith\.platformio\.cache and retry building. Seems like a corrupt toolchain to me.

No luck deleting .cache
I tried platform = espressif8266@1.5.0 in platformio.ini
That compiled OK but I got this error when linking:

Linking .pio\build\esp12e\firmware.elf
c:/users/graham smith/.platformio/packages/toolchain-xtensa@1.40802.0/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: .pio\build\esp12e\firmware.elf section `.iram.text' will not fit in region `iram1_0_seg'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\esp12e\firmware.elf] Error 1

The main.cpp is very small, so I don’t understand the “fit” error.
Seems to be a bug in the espressif826 platform. What version actually works now? Too bad because the ESP8266 boards are very common and cheap these days.

This is generally working. I’m using espressif8266 version 2.6.3 (latest) with

[env:esp12e]
platform = espressif8266
board = esp12e
framework = arduino

an an empty code

#include <Arduino.h>

void setup() {
}

void loop() {
}

and it all works fine.

Processing esp12e (platform: espressif8266; board: esp12e; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/esp12e.html
PLATFORM: Espressif 8266 (2.6.3) > Espressif ESP8266 ESP-12E
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
 - framework-arduinoespressif8266 3.20704.0 (2.7.4)
 - tool-esptool 1.413.0 (4.13)
 - tool-esptoolpy 1.30000.201119 (3.0.0)
 - toolchain-xtensa 2.40802.200502 (4.8.2)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 40 compatible libraries
Scanning dependencies...
No dependencies
Building in release mode
Compiling .pio\build\esp12e\src\main.cpp.o
Generating LD script .pio\build\esp12e\ld\local.eagle.app.v6.common.ld
Archiving .pio\build\esp12e\libFrameworkArduinoVariant.a
Indexing .pio\build\esp12e\libFrameworkArduinoVariant.a
Compiling .pio\build\esp12e\FrameworkArduino\Crypto.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp-frag.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp-version.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FS.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FSnoop.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Print.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Schedule.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\StackThunk.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Tone.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\TypeConversion.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\Updater.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\WString.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\base64.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\cbuf.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\cont.S.o
Compiling .pio\build\esp12e\FrameworkArduino\cont_util.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_app_entry_noextra4k.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_eboot_command.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_features.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_flash_quirks.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_flash_utils.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_i2s.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_main.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_noniso.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_phy.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_postmortem.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_si2c.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_sigma_delta.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_spi_utils.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_timer.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_waveform.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring_analog.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring_digital.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring_pulse.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring_pwm.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\core_esp8266_wiring_shift.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\crc32.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\debug.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\flash_hal.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\gdb_hooks.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\heap.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\libb64\cdecode.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\libb64\cencode.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\libc_replacements.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\sntp-lwip2.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs\spiffs_cache.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs\spiffs_check.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs\spiffs_gc.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs\spiffs_hydrogen.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs\spiffs_nucleus.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\spiffs_api.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\sqrt32.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\time.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\uart.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\umm_malloc\umm_info.c.o
Compiling .pio\build\esp12e\FrameworkArduino\umm_malloc\umm_integrity.c.o
Compiling .pio\build\esp12e\FrameworkArduino\umm_malloc\umm_local.c.o
Compiling .pio\build\esp12e\FrameworkArduino\umm_malloc\umm_malloc.cpp.o
Compiling .pio\build\esp12e\FrameworkArduino\umm_malloc\umm_poison.c.o
Archiving .pio\build\esp12e\libFrameworkArduino.a
Indexing .pio\build\esp12e\libFrameworkArduino.a
Linking .pio\build\esp12e\firmware.elf
Building .pio\build\esp12e\firmware.bin
Retrieving maximum program size .pio\build\esp12e\firmware.elf
Checking size .pio\build\esp12e\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [===       ]  32.7% (used 26776 bytes from 81920 bytes)
Flash: [==        ]  24.6% (used 256688 bytes from 1044464 bytes)
Creating BIN file ".pio\build\esp12e\firmware.bin" using "C:\Users\Max\.platformio\packages\framework-arduinoespressif8266\bootloaders\eboot\eboot.elf" and ".pio\build\esp12e\firmware.elf"
=========================== [SUCCESS] Took 6.48 seconds ===========================

But you also deleted toolchain-xtensa yes? Or for safety, all toolchain-xtensa-* folders right?

If yes, please double check that the toolchain folder has the file utility at C:\Users\<user>\.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\4.8.2. (The folder name may also be toolchain-xtensa@1.40802.0)

If it is not there, you still have a corrupted toolchain. Delete the folders again and disable antivirus to rule out interference from that.

FYI, I found utility in the folder name toolchain-xtensa@1.40802.0

I deleted all these folders:

C:\Users\<user>\.platformio\packages\toolchain-xtensa
C:\Users\<user>\.platformio\packages\toolchain-xtensa@1.40802.0
C:\Users\<user>\.platformio\.cache

After a restart, build worked without errors. Thanks for your help. I hated going back to the Arduino IDE after using Platform IO.

1 Like