Есть ли способ использовать std::map в Sming IDE (ESP8266)?

Я пытаюсь использовать std::map в прошивке ESP8266, разрабатываемой с помощью Sming 2.1.0 (в Windows 7 SP1). У меня следующая ошибка:

undefined reference to `std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'

Согласно этому http://www.esp8266.com/viewtopic.php?p=40593 и этот ESP8266 для Arduino IDE (xtensa-lx106-elf-gcc) и ошибка компоновки std::map следует добавить -lstdc++ (и потенциально -lsupc++) в список библиотек для компоновки.

Но в Makefile-project.mk в Sming стоит флаг -nostdlib!

LDFLAGS = -nostdlib ...

Если я изменю его на -lstdc++ -lsupc++, вместо этого я получу эти ошибки:

c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.1.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot find crt1-sim.o: No such file or directory
c:/espressif/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.1.0/../../../../xtensa-lx106-elf/bin/ld.exe: cannot find _vectors.o: No such file or directory

И решить эту проблему здесь https://www.reddit.com/r/esp8266/comments/3pmyx8/trying_to_link_but_getting_weird_errors/ рекомендует следующее:

Попробуйте использовать параметр ссылки -nostdlib.

Великолепно!

Я пытался использовать xtensa-lx106-elf из arduino-esp8266 https://github.com/rogerclarkmelbourne/arduino-esp8266/tree/master/tools/xtensa-lx106-elf (включая crt1-sim.o, _vectors.o и другие библиотеки), но это нет помощи.

Я не нашел окончательного ответа: "Есть ли способ использовать std::map и т. д. в Sming?"

Заранее спасибо за помощь.


person Oleg    schedule 24.07.2016    source источник


Ответы (1)


Постройте его в конце концов. В конце концов, это было просто.

Я должен добавить stdc++ supc++ в LIBS, а не в LDFLAGS. То есть:

LIBS = stdc++ supc++ microc ...

И оставайтесь LDFLAGS такими же (с -nostdlib)

LDFLAGS = -nostdlib ...
person Oleg    schedule 24.07.2016