Hallo, ich arbeite mit Atmel Studio 7 / GCC und habe das Problem, dass wenn ich die Funktion gcvt() mit #include <stdlib.h> im Code verwende, kommt die Compiler-Fehlermeldung: "undefined reference to '_sbrk' sbrk.c" Was muss ich da noch einbinden?
Ähmm... Ist dtostrf() nicht etwas praktikabler?
Ja, ich weiß, das ist nicht die Antwort, die du dir gewünscht hast.
Ist dtostrf() nicht etwas praktikabler?
Ich habe es mit sprintf() probiert und einen RAM-Überlauf bekommen. obwohl ich #include <stdlib.h> und #include <stdio.h> habe, kennt er die Funktion dtostrf() nicht!
kennt er die Funktion dtostrf() nicht!
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
avr-gcc-14.2.0 Sowohl in C als auch C++
Ich habe es mit sprintf() probiert und einen RAM-Überlauf bekommen.
Aha?
_sbrk
Hängt mit der dynamischen Speicherverwaltung bzw. Stack zusammen. Ich vermute bei dir läuft ganz was anderes falsch.
"undefined reference to '_sbrk' sbrk.c"
Wenn es sich wirklich um avr-gcc / GNU Tool handelt:
Um welche Compliler-Version geht es?
Und vor allem: Welche Libc wird verwendet? AVR-LibC verwendet nirgends sbrk, und es gibt auch kein Modul sbrk.c
Verwendet du etwa diese unsäglich verkorxte Microchip Version mit xc8?
Ich habe es mit sprintf() probiert und einen RAM-Überlauf bekommen.
Deswegen verwendet man snprintf.
AVR-LibC verwendet nirgends sbrk, und es gibt auch kein Modul sbrk.c
So ist es. Und die kennt auch kein gcvt(). Ist also alles gleich doppelt seltsam.
Die Fehlermeldung gibt's aber z.B. bei Toolchains, die newlib als C++ standardlib verwenden. Da muss man dann a) RTFM und danach b) sbrk selber implementieren. Google weiss darüber aber bescheid.
Oliver
Hallo, vielen Dank schonmal für eure Hilfe. Zu euren Fragen:
Welches Target? C oder C++?
C
Um welche Compliler-Version geht es?
Atmel Studio 7.02397, Compiler ist der, den das Studio benutzt. Was wichtiger ist: Ich habe kein Atmel Start und kein ASFx benutzt! Meine Includes: #include "sam.h" #include <stdbool.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <stdio.h>
Welche Libc wird verwendet?
Hui, ARM/GNU Linker-Libraries, da steht nur libm. Ist das OK?
Deswegen verwendet man snprintf.
Werde ich ausprobieren.
Meine Includes:
Da das von Dir gepostete eine Fehlermeldung des Linkers ist, sind die uninteressant. Entscheidender sind die Libraries. Sieh Dir die tatsächliche Kommandozeile des Linkeraufrufs an, nicht das vorverdaute Textfeld in der GUI Deiner Entwicklungsumgebung.
Sieh Dir die tatsächliche Kommandozeile des Linkeraufrufs an
Ja und wo finde ich die? Makefile?
Meine Includes: #include "sam.h"
Wie gesagt, RTFM, und dann sbrk selber implementieren.
Oliver
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.