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

OP #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
OP #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é
OP #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

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.

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.