Hallo ich muss wieder mal um Hilfe bitten. Ich habe ein Projekt längere Zeit nicht bearbeitet. Jetzt treten plötzlich beim Linker Fehler auf, die ich mir nicht erklären kann und ich weiss auch nicht wo ich nachschauen muss um zu sehen was falsch läuft. Andere Projekte mit dem gleichen Compiler und ähnlicher Struktur funktionieren dagegen einwandfrei. Hat jemand ein Idee dazu bitte ? Vielen Dank alix-r Hier paar Beispiele zu den Fehleren: Description Resource Path Location Type /c/gnu/newlib-build/arm-elf/newlib/libc/stdio/../../../../../newlib-1.16 .0/newlib/libc/stdio/makebuf.c undefined reference to `_fstat_r' gps-landing 59 C/C++ Problem Description Resource Path Location Type /c/gnu/newlib-build/arm-elf/newlib/libc/stdio/../../../../../newlib-1.16 .0/newlib/libc/stdio/stdio.c undefined reference to `_close_r' gps-landing 124 C/C++ Problem .... und weiter C:/Programme/GNUARM/arm-elf/lib/libc.a(lib_a-freer.o): In function `_malloc_trim_r': /c/gnu/newlib-build/arm-elf/newlib/libc/stdlib/../../../../../newlib-1.1 6.0/newlib/libc/stdlib/mallocr.c:3326: undefined reference to `_sbrk_r' /c/gnu/newlib-build/arm-elf/newlib/libc/stdlib/../../../../../newlib-1.1 6.0/newlib/libc/stdlib/mallocr.c:3335: undefined reference to `_sbrk_r' /c/gnu/newlib-build/arm-elf/newlib/libc/stdlib/../../../../../newlib-1.1 6.0/newlib/libc/stdlib/mallocr.c:3340: undefined reference to `_sbrk_r' C:/Programme/GNUARM/arm-elf/lib/libc.a(lib_a-makebuf.o): In function `__smakebuf_r': /c/gnu/newlib-build/arm-elf/newlib/libc/stdio/../../../../../newlib-1.16 .0/newlib/libc/stdio/makebuf.c:59: undefined reference to `_fstat_r' C:/Programme/GNUARM/arm-elf/lib/libc.a(lib_a-mallocr.o): In function `malloc_extend_top': /c/gnu/newlib-build/arm-elf/newlib/libc/stdlib/../../../../../newlib-1.1 6.0/newlib/libc/stdlib/mallocr.c:2160: undefined reference to `_sbrk_r' /c/gnu/newlib-build/arm-elf/newlib/libc/stdlib/../../../../../newlib-1.1 6.0/newlib/libc/stdlib/mallocr.c:2197: undefined reference to `_sbrk_r' C:/Programme/GNUARM/arm-elf/lib/libc.a(lib_a-stdio.o): In function `__sclose': /c/gnu/newlib-build/arm-elf/newlib/libc/stdio/../../../../../newlib-1.16 .0/newlib/libc/stdio/stdio.c:124: undefined reference to `_close_r' ..... make: *** [gpsrcl.elf] Error 1
Für mich sieht das so aus, als ob die Standardlibrary, meist newlib, nicht gefunden wird.
Bin mir nicht sicher , dass es das ist. Wie gesagt, anderes ähnliches Projekt mit fast dem gleichen makefile , gleichen Pfaden, gleichem Compiler , auf gleichem PC, etc. macht keine Probleme. Noch eine andere Idee ? tnx
Noch ein Hinweis: Es muss an der Version von GCC liegen oder an meiner Installation von GCC. Bin zurück auf bu-2.17_gcc-4.1.1-c-c++_nl-1.14.0_gi-6.5.exe, damit geht es wieder. Mit der neuesten Version bu-2.19_gcc-4.3.2-c-c++_nl-1.16.0_gi-6.8.exe, treten die besagten Probleme auf. Weiss jemand warum das so ist ? Gruss alix-r
http://www.fivemanconspiracy.com/node/19 Fill in your own routines in syscalls.c
1 | Malloc. You might not call malloc yourself, but chances are good that you use something else that calls it. Something like printf. If you dig into newlib, you'll find out that you need one file to make printf, scanf and malloc to work. This file is called "syscalls.c" and it has functions defined for "_write" "_read" and "_sbrk" which let printf, scanf, and malloc work. You'll need this. Watch out for reentrancy. If you use a newlib built to be reentrant, you'll need to use slightly different syscalls.c, which provides _sbrk_r, _write_r, _read_r. |
/Bingo
Entschuldigung, aber ich verstehe kein Wort. Nicht weil die die Beschreibung in http://www.fivemanconspiracy.com/node/19 englisch ist, sondern der Sinn ist mir nicht klar. Was ist den jetzt plötzlich anders als bei der vorherigen Version ?
Hm, anscheinend wird die Newlib gefunden. Allerdings fehlen die Definitionen für die syscalls. Verwendest du Befehle wir printf etc.? Wenn ja, musst du erst mit Syscalls die Hardware konfigurieren. Afaik gibts da für LPC was fertiges. Bei allem anderen heißt es: Selbst ist der Mann (oder Frau).
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.