C++ Компилятор разве поставляется не в бинарном виде? Скрипт можешь выложить, посмотреть могу. Но будет ли это успешно - пока не уверен...
Что нужно править:
1. Добавить компилятор G++, можно и C++. Я взял их из версии кита 1.0.4, где они еще были.
2. Положить либы и инклуды, которые лежат тут:
https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
3. Подправить скрипт линковщика. В текущей версии это eagle.app.v6.ld. Изменения:
Код:
--- eagle.app.v6.ld.orig 2014-10-24 16:51:40.000000000 +0300
+++ eagle.app.v6.ld 2014-11-14 02:31:13.658457791 +0300
@@ -96,11 +96,14 @@
*(.gnu.linkonce.e.*)
*(.gnu.version_r)
*(.eh_frame)
+ . = (. + 3) & ~ 3;
/* C++ constructor and destructor tables, properly ordered: */
+ __init_array_start = ABSOLUTE(.);
KEEP (*crtbegin.o(.ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
+ __init_array_end = ABSOLUTE(.);
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
Суть в том, чтобы предоставить в код указатели на начало и конец списка конструкторов глобальных объектов для последующей инициализации их в коде.
4. Добавить пример HelloWorld для С++. Он в аттаче. Возможно, его стоит немного доработать напильником, но и в таком виде он может помочь понять что к чему.
У меня после этих действий пример собрался успешно, и работает.
В принципе, могу выложить где-то образ своей папки Espressif, но там лежит кит 1.0.5 плюс указанные изменения.