www.mikrocontroller.net

Forum: Compiler & IDEs GNUARM Linkerproblem


Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte mir bitte jemand weiterhelfen ?

Ich mache die ersten Gehversuche mit GNUARM unter Eclipse. Soweit
geht es schon, aber ich habe anscheinend noch ein Problem beim Linken.
Ich habe jede Menge Fehler so wie diesen unten. Denke irgendwas
mit der Library geht noch schief.


undefined reference to `__subdf3'
[../../../../../newlib-1.14.0/newlib/libc/stdlib/dtoa.c]  pyrano 
Zeile
349  4. Juli 2006 20:43:14  9377

Danke jür jede Hilfe.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meint Frau Google dazu?

Aja. Library gcc dazulinken...
http://www.newmicros.com/discussion/archive/index....

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frau Google schitzt schon seit längerem für mich. Sie sagt viel,
aber nichts mit dem ich was anfangen kann im momentanen Stand.

In allen meinen Beispielen stand nix von einer libgcc. Welche der
16 im GNUARM Packet ist die richtige ? (Sri, für die dumme Frage)

tbx

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Beispiele und welches Target?

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mittlerweile habe ich die beiden nötigen libs beim Linker angegeben,
aber es geht immer noch nicht. Jetzt kommt folgender Fehler:

C:\Programme\GNUARM\arm-elf\lib/libc.a(syscalls.o): In function
`_sbrk':
../../../../../../newlib-1.14.0/newlib/libc/sys/arm/syscalls.c:500:
undefined reference to `end'

Inzwischen habe ich gelesen, dass wohl ein direkter Linkeraufruf nicht
gleich ist, wie wenn GCC selbst den Linker aufruft. GCC findet
anscheinend die libs selber, wärend man beim Linker direkt diese mit
angeben muss.

Was muss ich tun ? Mache ich grundsätzlich was falsch?

Danke

(PS: Frau Google verstehe ich wieder nicht!)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist eine FAQ zur newlib.

Wenn du eine newlib von Grund auf für ein Target aufsetzen
willst/musst, musst du bestimmte Grundfunktionen noch programmieren,
weil die nur als Stubs in der newlib drin sind.

Genaueres ist in der Doku der newlib beschrieben und auch in dem ARM
Forum http://en.mikrocontroller.net taucht die Frage und Antworten dazu
regelmäßig auf.

Im konkreten Fall mit end, kann man sich ein globales Symbol im
Startup-Code anlegen. Z.B. eine Endlosschleife, die angesprungen wird,
wenn main() zurückkehrt. Oder du schreibst dir ein end)= Makro oder
eine Funktion mit einer While(1); Schleife.

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan

Danke, es hat so geklappt.

Momentan sind alle Fehler weg und ich kann mein Program schon mit dem
ARM Simulator laden und testen.

Werde einfach hier wieder fragen, wenns nicht mehr weiter geht
(natürlich nur nachdem das Forum und das WEB furchforstet wurde!)
GCC und Make und alles was dazugehört ist für einen Einsteiger in
GNU nicht einfach!

Danke nochmals für die geduldige Hilfe.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch ein schöner Anfang.

Lookielookie machen bevor man eine Frage stellt, ist auch schön.
Vielleicht findet man dabei schon einen Lösungsansatz oder Ideen für
eine präzise Frage.

Grundsätzlich sollte man beim Fragen angeben, bei welchen Tools
(Versionen!) man was (Kommandozeile, Sourcecode, Makefile...)
eingegeben hat und was rausgekommen ist (Cut&Paste der Ausgabe).

Zwei schöne Artikel dazu:

Wie man Fragen richtig stellt
http://www.lugbz.org/documents/smart-questions_de.html

Fehlerberichte - wie Sie Softwarefehler melden sollten
http://www.chiark.greenend.org.uk/~sgtatham/bugs-de.html

Nach einem Artikel "Wie man geduldig, nützliche Antworten gibt!"
suche ich noch ;-)

Autor: roty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Hinweis ursprünglichen Thema.

Es kann böse Folgen haben, wenn das Symbol "end" am falschen Ort
benutzt wird. Siehe hier :

http://en.mikrocontroller.net/topic/72860#105624

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.