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!
Alex schrieb: > kennt er die Funktion dtostrf() nicht!
1 | #include "stdlib.h" |
2 | |
3 | int main() |
4 | {
|
5 | char buf[50]; |
6 | char * str = dtostrf(3.141592653589793238462643383279502884197169399375, 49, 16, buf); |
7 | }
|
avr-gcc-14.2.0 Sowohl in C als auch C++ Alex schrieb: > Ich habe es mit sprintf() probiert und einen RAM-Überlauf bekommen. Aha? Alex schrieb: > _sbrk Hängt mit der dynamischen Speicherverwaltung bzw. Stack zusammen. Ich vermute bei dir läuft ganz was anderes falsch.
:
Bearbeitet durch User
Alex schrieb: > "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?
:
Bearbeitet durch User
Alex schrieb: > Ich habe es mit sprintf() probiert und einen RAM-Überlauf bekommen. Deswegen verwendet man snprintf.
Johann L. schrieb: > 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
:
Bearbeitet durch User
Oliver S. schrieb: > Toolchains, die newlib Da würd ich eher eine AVR Toolchain besorgen / bauen die AVR-LibC verwendet.
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.
:
Bearbeitet durch User
Alex schrieb: > 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?
Alex schrieb: > Meine Includes: > #include "sam.h" Wie gesagt, RTFM, und dann sbrk selber implementieren. Oliver
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.