Ich bin gerade dabei einen STM32F103 mit folgenden Tools zu programmieren: Eclipse 3.5.2 IDE for C/C++ GNU ARM Eclipse (0.5.3.201001261103) OpenOCD 0.4.0 Sourcery G++ Lite 2009q3-68 Ich verwende die FW Lib von ST in der Version 2.0.1 (ich weiß es gibt neuere Versionen). Dank des GNU Arm Plugins hat sich das mit den Makefiles um einiges erleichtert, da ich noch nicht so viel Erfahrung damit habe. Die Linkerscripts habe ich aus der Demo für Ride 7 entnommen, die ST in der FW Lib V2.0.3 bereitgestellt hat (siehe Anhang) Nun erscheinen beim compilieren folgende Fehlermeldungen: -TC:\<Mein Projekt Pfad>\STM32F103_512K_64K_FLASH.ld d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text+0x12): undefined reference to `_sbrk' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-writer.o): In function `_write_r': writer.c:(.text+0x16): undefined reference to `_write' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-closer.o): In function `_close_r': closer.c:(.text+0x12): undefined reference to `_close' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-lseekr.o): In function `_lseek_r': lseekr.c:(.text+0x16): undefined reference to `_lseek' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-readr.o): In function `_read_r': readr.c:(.text+0x16): undefined reference to `_read' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-fstatr.o): In function `_fstat_r': fstatr.c:(.text+0x14): undefined reference to `_fstat' d:/programme/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/lib/th umb2\libc.a(lib_a-isattyr.o): In function `_isatty_r': isattyr.c:(.text+0x12): undefined reference to `_isatty' collect2: ld returned 1 exit status cs-make: *** [starnode.elf] Error 1 Kann der Fehler daher kommen, dass dem Linkerskript eine Library fehlt? Und ja, welche? Grüße Simon
Ich habe mir deine Linkerscripts nicht angesehen, aber generell: Libraries gibt man nicht im Linkerscript an, sondern auf der Kommando- zeile des Linkers. Entweder, du benennst sie komplett (libfoo.a), oder du nimmst die Abkürzung -lfoo. Libraries werden an der Stelle, an der sie auf der Kommandozeile stehen, durchsucht, danach vergisst der Linker wieder, was er darin gesehen hatte. Man schreibst sie daher für gewöhnlich ans Ende der Kommandozeile.
Suche mal in Richtung reentrant functions! Die newlibc setzt zum Teil auf hardwareabhängige Funktionen auf (siehe Deine Fehlermeldungen und rentrant.h). Einfache minimale Implementationen dieser Funktionen findest Du hier im Abschnitt "11 Reentrancy". http://www.sourceware.org/newlib/
Ahaaaa, danke Sven. Das war ein guter Hinweis!! Werde mal schauen, ob ich das hinbekomme, die fehlenden Funktionen zu schreiben...
Hey Simon! Ich weiß dass dieser Thread schon ein wenig älter ist, aber hast Du damals eine Lösung gefunden? Habe dass selbe problem sobald ich eine Funktion aus z.B. der stdlib.h oder stdio.h verwenden will. Habe Yatargo und CodeSourcery installiert. Danke, Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.