Я использую плату разработчика STM32 с компилятором MCU G ++ & Ссылка: arm-none-eabi-g++
. Однако, по-видимому, не совместим с STL:Как использовать STL на чипах ARM Cortex-M?
#include <list>
int main (void)
{
std::list<int> list;
list.push_back(1);
list.sort();
return 0;
}
Компоновщик сообщения об ошибках: СТЛ
abort.c:(.text.abort+0xa): undefined reference to `_exit'
fstatr.c:(.text._fstat_r+0x10): undefined reference to `_fstat'
signalr.c:(.text._kill_r+0x10): undefined reference to `_kill'
signalr.c:(.text._getpid_r+0x0): undefined reference to `_getpid'
writer.c:(.text._write_r+0x12): undefined reference to `_write'
closer.c:(.text._close_r+0xc): undefined reference to `_close'
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
lseekr.c:(.text._lseek_r+0x12): undefined reference to `_lseek'
readr.c:(.text._read_r+0x12): undefined reference to `_read'
C++ кажется зависит от операционных систем. Поскольку у микроконтроллера нет таких вещей, эти существенные части отсутствуют при соединении ELF.
Проблема в том, как я могу использовать STL на чипах серии L4 серии STM32?
Эти сообщения-ссылки не должны ничего делать с стандартной библиотекой C++. Похоже, вам не хватает привязок для newlib или таких. –
Возможно, вам понадобится установить новый компилятор [GCC] (http://gcc.gnu.org/) и, возможно, другие вещи (кросс-binutils, cross-libc). Это вопрос системного администрирования и установки соответствующих и новейших инструментов сборки. –
@ πάνταῥεῖ @BasileStarynkevitch Я добавил флагов '-specs = nosys.specs' к компоновщику, а затем никаких ошибок не появилось !! Задача решена. –