GNUARM Linkerproblem

Gast #366937
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.
Gast #366939
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
Gast #366941
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!)
Gast #366942
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.
Gast #366943
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.
Gast #366944
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 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren