mikrocontroller.net

Forum: Compiler & IDEs GNU ARM


Autor: Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
beim Linken bekomme ich folgende Fehlermeldungen, und zwar nur dann,
wenn ein cast von float zu integer durchgeführt wird (erzwungen oder
gewollt). Wenn ich float Variablen definiere und  verwende, gibt es
keine Fehler.
Was fehlt "ihm" da ?


 undefined reference to `__divsf3'
 undefined reference to `__floatsisf'
main.o(.text+0x68):source/main.c:76: undefined reference to
`__mulsf3'
main.o(.text+0x70):source/main.c:76: undefined reference to
`__mulsf3'
main.o(.text+0x78):source/main.c:76: undefined reference to
`__addsf3'
main.o(.text+0x80):source/main.c:77: undefined reference to
`__fixsfsi'
main.o(.text+0x94):source/main.c:78: undefined reference to
`__addsf3'
main.o(.text+0xa4):source/main.c:80: undefined reference to `__gesf2'

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das scheint eine Linkerfehlermeldung zu sein. Mal die von Dir gelinkten
Libraries überprüft?

Autor: Konrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja schon. aber es gibt in dem ARMGNU_Package so viele libs, dass ich da
doch mit dem unterscheiden überfordert bin.
Ich teste gerade alle möglichen Pfade aus.

Konrad

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die entsprechenden Funktionen gehören normalerweise zum GCC bzw.
dessen libgcc.a.  Allerdings habe ich von der ARM-Portierung des GCC
keine Ahnung, weiß also nicht, wann und unter welchen Umständen die
dort wie gebaut werden.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mglw. fehlt nur in -lc und -lgcc in den Linker-Optionen. Information
ueber den verwendeten Controller und ein Blick in das genutzte Makefile
und Link-Script wären für weitere Unterstützung hilfreich.

Autor: Konrad (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das Linkerfile hänge ich dran, die Linkerzeile aus dem make-file
(DOS-batch) sieht so aus. Also auch -lc ist drin.

arm-elf-ld.exe -Map=Test9.map --cref -T.\Test9.ld  -Ttext=0x01000000
-Tdata=0x03000000 -t -static -lc  -lm  --start-group startup.o main.o
interrupt.o   -o %obj_file%

Es scheint auch kein "nicht finden" der Bibliotheken zu sein. Wenn
ich z.B. strings verwende gibt es keine Fehlermeldung.

Für ein einfaches Dividieren (wie oben beschrieben), auch bei
Verwendung von Int (keinerlei float), muss auch kein header-file
eingebunden werden.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm, testweise vielleicht einfach noch ein -lgcc dazu. ich nutze
makefiles, vielleicht hilft eines aus meinen WinARM-Beispielen weiter:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte auch nicht, daß gar keine Libraries gefunden würden, sondern
daß die Library, die die Funktionen/Symbole

  __mulsf3, __addsf3, __fixsfsi und __gesf2

enthält, nicht zu Deinem Projekt gelinkt wird.

Keine Ahnung, welche Library das ist; ich verwende Deinen Compiler
nicht.

Autor: Marius Goebel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte das selbe Problem. Habe einfach anstatt des LD den gcc zum linken
benutzt (mit den selben Libs gelinkt).

Gruß

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte man (für aus C generierten Code) allerdings immer tun.
Die Grundannahme ist, dass in einer konsistent gebauten Toolchain der
Compilertreiber immer weiß, was er woher und in welcher Reihenfolge zu
linken hat, daher nimmt man den Compilertreiber statt dem Linker
selbst.

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.