Codesourcery Fehlermeldung (hosted/unhosted)

Gast #2676975
Hallo,
ich hoffe mir kann jemand bei folgender Fehlermeldung weiterhelfen
1
C:\Program Files (x86)/CodeSourcery/Sourcery G++ Lite/arm-none-eabi/lib/thumb2\libc.a(lib_a-abort.o): In function `abort':
2
abort.c:(.text+0xa): undefined reference to `_exit'
3
C:\Program Files (x86)/CodeSourcery/Sourcery G++ Lite/arm-none-eabi/lib/thumb2\libc.a(lib_a-signalr.o): In function `_kill_r':
4
signalr.c:(.text+0x18): undefined reference to `_kill'
5
C:\Program Files (x86)/CodeSourcery/Sourcery G++ Lite/arm-none-eabi/lib/thumb2\libc.a(lib_a-signalr.o): In function `_getpid_r':
6
signalr.c:(.text+0x0): undefined reference to `_getpid'
7
C:\Program Files (x86)/CodeSourcery/Sourcery G++ Lite/arm-none-eabi/lib/thumb2\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
8
sbrkr.c:(.text+0x12): undefined reference to `_sbrk'
9
collect2: ld returned 1 exit status

Laut google 
(http://communities.mentor.com/community/cs/archives/arm-gnu/msg01761.html) 
und zugehöriges getting started guide 
(http://www.google.de/url?sa=t&rct=j&q=codesourcery%20getting%20started%20guide&source=web&cd=2&sqi=2&ved=0CGMQFjAB&url=http%3A%2F%2Fwiesel.ece.utah.edu%2Fredmine%2Fattachments%2Fdownload%2F106&ei=e0GyT_-mO5CRswaM4eSuBg&usg=AFQjCNGGsuT9JYXVBTidzRt4AH4qT1av4g&cad=rja) 
handelt es sich um ein Codesourcery Feature zum debuggen. Ich nutze 
dieses Feature allerdings nicht, zumindest nicht wissentlich. Ich wollte 
eigentlich nur ein IAR Projekt in Eclipse mit ARM Toolchain + 
Codesourcery portieren.
Kennt jemand die Meldung und weis wie man das Problem behebt? Hab ich 
irgendwelche Infos vergessen zu posten?

Viele Grüße,
Chris
Gast #2677002
Hallo,

was ist denn das für eine Toolchain?
Soll ein embedded Project compiliert werden? Evtl mit der newlib?

Ist es ein CrossCompiler? Kannst du mal die Makefile posten?
Gast #2677076
Jim Meba schrieb:
> Schau Dir Deine Linker Settings mal an.
> Bei mir half: -lc -lm -lcs3unhosted -lgcc
> Die entsprechenden Funktionen sind dann als Dummy verfügbar.

Hab ich bereits drin:
Invoking: ARM Sourcery Windows GCC C++ Linker
arm-none-eabi-g++ 
-T"C:\Users\csander\AppData\Roaming\energymicro\Device\EnergyMicro\EFM32 
GG\Source\G++\efm32gg.ld"  -Xlinker --gc-sections -L"C:\Program Files 
(x86)/CodeSourcery/Sourcery G++ Lite/arm-none-eabi/lib/thumb2" 
-L"C:\Program Files (x86)/CodeSourcery/Sourcery G++ 
Lite/lib/gcc/arm-none-eabi/4.4.1/thumb2" -Wl,-Map,mandel.map 
--no-wchar-size-warning -mcpu=cortex-m3 -mthumb -DNDEBUG -o "mandel.elf" 
./emlib/src/em_assert.o ./emlib/src/em_cmu.o ./emlib/src/em_dbg.o 
./emlib/src/em_ebi.o ./emlib/src/em_emu.o ./emlib/src/em_gpio.o 
./emlib/src/em_rmu.o ./emlib/src/em_system.o ./emlib/src/em_usart.o 
./drivers/graphics/dmd/ssd2119/dmd_ssd2119_direct.o 
./drivers/tftdirect.o ./drivers/tftspi.o  ./bsp/dvk.o ./bsp/dvk_ebi.o 
./bsp/dvk_spi.o ./bsp/trace.o  ./EFM32GG/Source/G++/startup_efm32gg.o 
./EFM32GG/Source/system_efm32gg.o  ./mandel.o   -lc -lm -lcs3unhosted 
-lgcc -lcs3

netseal schrieb:
> Hallo,
>
> was ist denn das für eine Toolchain?
> Soll ein embedded Project compiliert werden? Evtl mit der newlib?
>
> Ist es ein CrossCompiler? Kannst du mal die Makefile posten?

Das Projekt existiert als Makefile-Projekt und normales C++ Projekt, bei 
beiden kommt die gleiche Error Meldung. Ich hab das Makefile des 
Makefile-Projekts mal angehängt, da es besser lesbar ist als der dreck 
vom normalen C++ Projekt.

Da ich meinem Projekt einige C++ Files hinzufügen will habe ich mein 
main file (mandel.c) in mandel.cpp umbenannt. Seitdem spuckt der Linker 
die Fehlermeldungen aus.
Angehängte Dateien:
Gast #2677129
ein Thread der sich anscheinend mit dem gleichen Problem beschäfftigt: 
http://embdev.net/topic/129607

Resultat dieses Threat: "mach einfach Function stubs hin, dann meckert 
der Linker nichtmehr". Wenn ich das mache, verschwinden die 
Fehlermeldungen und das Programm läuft auch auf dem Controller. Ich 
würde allerdings gern Verstehn wo der Fehler her kommt und wie man ihn 
sinnvoll behebt.
Gast #2677180
ich werd mal schaun, der code stammt leider nicht von mir daher kann ich 
aus der stehgreif dazu nix sagen, aber ich werds mir anschaun. Aber wie 
kann es sein das der Fehler nicht kommt wennn ich nur .c dateien 
compiliere/linke und nur durch das umbenennen des mainfiles in .cpp + 
Anpassung des makefiles, kommt plötzlich diese Fehlermeldung. Sind sich 
c und cpp compiler so unterschiedlich was newlib angeht?
Gast #2677198
A. K. schrieb:
> TOOOHMAAATOOOH schrieb:
>
>> c und cpp compiler so unterschiedlich was newlib angeht?
>
> In C++ hast du leicht new/delete an der Backe, weil u.U. implizit
> irgendwo im Umfeld von Konstruktoren vergraben. Und auch das exception
> handling, wenn nicht explizit abgeschaltet.

ich hab meine cpp libs/files ja noch garnicht dem projekt hinzugefügt, 
nur eine c-datei, welche ausschließlich C-Code, also keine klassen, 
beinhaltet, umbenannt in .cpp.
Wenn ich einige der cpp Files dem Makefile als source hinzufüge (welche 
unter IAR wunderbar compilieren), dann kommen noch mehr dieser 
Fehlermeldungen.
#2677204
-fno-rtti
-fno-exceptions

Das exception handling hast du nämlich bereits an der Backe, wenn du den 
Kram unverändert als C++ übersetzt und dich nicht dagegen gewehrt hast. 
Musst du rein garnix dafür tun, aber eben dagegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.