Ich benutze STM32 dev board mit MCU G ++ Compiler & Linker: arm-none-eabi-g++
. Allerdings scheint es nicht kompatibel mit STL:Wie benutzt man STL auf ARM Cortex-M Chips?
#include <list>
int main (void)
{
std::list<int> list;
list.push_back(1);
list.sort();
return 0;
}
Die Linkerfehlermeldungen:
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'
Die C++ STL scheint abhängig von Betriebssystemen. Da der Mikrocontroller keine solchen Dinge hat, fehlen diese wesentlichen Teile während der Verknüpfung von ELF.
Das Problem ist, wie kann ich STL auf STM32 L4-Serie Chips verwenden?
Diese Linker-Nachrichten haben nichts mit der C++ - Standardbibliothek zu tun. Sieht so aus, als ob dir Bindings für newlib oder ähnliches fehlen. –
Sie müssen möglicherweise einen neueren [GCC] (http://gcc.gnu.org/) Cross-Compiler installieren, und vielleicht andere Dinge (ein Cross-Binutils, eine Cross-libc). Es ist eine Frage der Systemadministration und der Installation relevanter und neuer Build-Tools. –
@ πάνταῥεῖ @BasileStarynkevitch Ich habe dem Linker '-specs = nosys.specs' hinzugefügt, und dann sind keine Fehler aufgetaucht !! Problem gelöst. –