mikrocontroller.net

Forum: Compiler & IDEs Exceptions(arm-elf-gcc)


Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie kann man mit exceptions in arm-alf-gcc arbeiten? Beim Linken kommen 
nämlich lauter Meldungen über undefinierte Referenzen wie z.b.
arm-elf-gcc  -mcpu=arm7tdmi  -I. -gdwarf-2 -DROM_RUN  -O2 -Wall  -Wa,-adhlns=crt0.lst   -MD -MP -MF .dep/main.elf.d crt0.o     main.o uart.o LCD.o System.o Robot.o   --output main.elf -nostartfiles -Wl,-Map=main.map,--cref -lc -lnewlib-lpc -lm -lc -lgcc  -lstdc++ -TLPC2138-ROM.ld
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(makebuf.o): In function `__smakebuf':
makebuf.c:(.text+0x3c): undefined reference to `_fstat_r'
makebuf.c:(.text+0x110): undefined reference to `isatty'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sclose':
stdio.c:(.text+0xc): undefined reference to `_close_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sseek':
stdio.c:(.text+0x30): undefined reference to `_lseek_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__swrite':
stdio.c:(.text+0x84): undefined reference to `_lseek_r'
stdio.c:(.text+0xac): undefined reference to `_write_r'
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sread':
stdio.c:(.text+0xd0): undefined reference to `_read_r'
collect2: ld returned 1 exit status
make.exe: *** [main.elf] Error 1

Was machen die einzelnen Funktionen? Kann man sie auch selbst schreiben?

MfG Mark

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sind Linker-Fehler, da Funktionen fehlen. Diese sollten aber von 
newlib-lpc bereitgestellt werden, es könnte ein Problem zwischen 
newlib-lpc und C++ sein.  Da wohl WinARM genutzt wird, würde ich mir das 
gerne genauer anschauen. Bitte den gesammten Code oder zumindest ein 
Minimalbeispiel, an dem man as Fehlerverhalten nachvollziehen kann 
(Quellen, Makefile, Linker-Script) zusammenpacken und an 
mthomas(at)rhrk(dot)uni-kl(dot)de schicken.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte die libnewlib-lpc nicht am Schluß stehen?

Autor: Mark .. (mork)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Antwort.

Da ich auch anderen die Möglichkeit geben möchte, sich den Code 
anzuschauen werde ich ihn hier anhängen. Es ist nur ein Beispielcode, 
das einfach nur das Problem demonstriert. Den ganzen Code zu schicken 
wäre etwas unsinnig, weil sich eh keiner die 2500 Zeilen ansehen würde. 
Das Linkerscript sowie die Startup habe ich aus einem der Beispiele von 
WinARM genommen.

MfG Mark

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grade erstmal oberflächlich den Code angeschaut. Da passt einiges nicht 
zusammen. Am Besten erstmal mit dem Beispiel lpc2129_newlib_cpp in 
WinARM\examples anfangen. Darin sollten zumindest linker-script und 
newlib-headers richtig organisiert sein. Erforderliche Anpassungen für 
LPC2138 sind minimal. Dann damit C++ exceptions ausprobieren um das 
Problem einzugrenzen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.