• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

С++ компилятор в UDK

Alex_S

New member
CHERTS, можешь в новой версии кита вернуть С++ компилятор?
Правда, надо будет сделать несколько доработок, описанных тут,
и подправить скрипт линковщика (eagle.app.v6.ld:), как это предложено тут.

В результате тем, кто пользует С++, надо будет делать меньше действий для адаптации новых китов.
Заранее благодарен!!!
 

CHERTS

Moderator
Команда форума
можешь в новой версии кита вернуть С++ компилятор?
Ну начнем с того что c++ компилятор в последней редакции у меня не собирается, вылазит куча ошибок, а бороться с ними у меня бонально нет времени, честно, в сутках только 24 часа, хотел бы я чтоб было 30, итак спать ложусь в час ночи. Могу выложить мой скрипт сборки компилятора, попробуете собрать. Вариант взять сборку c++ компилятора с форума esp8266.com и добавить в свой DevKit я не рассматриваются, т.к. не я её собирал и не могу дать гарантий, что с ней все хорошо (вирусы, и т.п.).

Правда, надо будет сделать несколько доработок, описанных тут,
и подправить скрипт линковщика (eagle.app.v6.ld:), как это предложено тут.
Опять же нет времени разбираться в том что нужно править, если Вы можете это исправить и дать мне готовый набор файлов + обязательно рабочие примеры прошивок на c++ то я готов это все скомпоновать в инсталлятор. Но остаётся открытым вопрос сборки c++ компилятора под виндой.
 

Alex_S

New member
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 плюс указанные изменения.
 

Вложения

Сверху Снизу