Cross ARM C++ Linker Problem bei c++ Code mit Klassen

#3447725
Lesenswert?

Hey,

ich hab nun Eclipse Kepler mit CDT, GDB, OpenOCD, Yagarto und Sourcery 
CodeBench Lite zum laufen gebracht.

Es funktioniert eigentlich alles solange ich nur C-Code habe. Sobald ich 
aber eine Klasse erstelle bekomme ich Linker Probleme....

Der Fehler:

17:22:34 **** Incremental Build of configuration Release for project 
DigiPot ****
cs_make all
Building target: DigiPot.elf
Invoking: Cross ARM C++ Linker
arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Os 
-fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections 
-Wall  -g -T libs.ld -T mem.ld -T sections.ld -nostartfiles -Xlinker 
--gc-sections -L"../ldscripts" -Wl,-Map,"DigiPot.map" -o "DigiPot.elf" 
./src/test/main.o ...
./src/test/main.o: In function `_GLOBAL__sub_I_LED_Green':
C:\Dokumente und 
Einstellungen\ENG2\Desktop\RFID\eclipse\workspace\DigiPot\Release/../src 
/test/main.cpp:107:  undefined reference to `__dso_handle'
c:/sourcery_codebench_lite_for_arm_eabi/bin/../lib/gcc/arm-none-eabi/4.8 
.1/../../../../arm-none-eabi/bin/ld.exe:  DigiPot.elf: hidden symbol 
`__dso_handle' isn't defined
c:/sourcery_codebench_lite_for_arm_eabi/bin/../lib/gcc/arm-none-eabi/4.8 
.1/../../../../arm-none-eabi/bin/ld.exe:  final link failed: Bad value
collect2.exe: error: ld returned 1 exit status
cs_make: *** [DigiPot.elf] Error 1

Ich werde nicht Schlau daraus. Es wird doch der C++ Linker genutzt...

Weiß jemand weiter?! Wäre super! Vielen Dank!!

Gruß Jonas
#3448411
Lesenswert?

Hey,

also das bringt mich leider auch nicht weiter...

Ich kann noch dazu sagen das ich ein C++ Projekt template für den 
STM32F4 genutzt habe. Dieses wird ja beim erstellen eines neuen Projekts 
unter Executable angeboten.

Den Code den ich versuche zu compelieren kann ich mit anderen IDEs ohne 
Probleme umsetzen z.B. mit IAR oder EM::Blocks.

Gruß Jonas und danke für die Unterstützung
(Firma: www.dossmatik.de) #3448446
Lesenswert?

Jonas Damhuis schrieb:
> Weiß jemand weiter?! Wäre super! Vielen Dank!!

Ich kann dir die Fehlermeldung übersetzen.
Der Linker wird genötigt auf `__dso_handle' zuzugreifen und findet es 
nicht. Variablen mit führenden Unterstrich sind interne Geschichten.
In deinem Fall heisst dass sicherlich Zugriff auf das Betriebssystem.

Das du es compilieren kannst scheint, dass es zumindest eine Menge 
stimmt.
Es könnte gut sein, dass du Librarys oder weitere Dateien vom 
Betriebssystem oder dem Linker übergeben musst.


-l library
Search the library named library when linking.

Vielleicht kannst du in link Optionen beim IAR einschauen.

René
#3448468
Lesenswert?

Hey danke für die Beschreibung.

Also bei Em::Blocks und IAR musste ich bei den Linker Settings immer 
angeben das er C++ Librarys nutzen soll. Wie mache ich das nun bei 
Eclips?!....

Dazu versteh ich leider auch nicht wo ich die Befehle wie bei dir oben 
-l library eingeben muss...

Gruß Jonas

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