• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 плюс указанные изменения.
 

Вложения

Сверху Снизу