-         

Ergebnis 1 bis 6 von 6

Thema: C++ auf arm2103

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150

    C++ auf arm2103

    Anzeige

    Hallo,
    ich versiche gerade für mein ARM-board ein C++ Program zu übrsetzen.
    Ich bin dabei von einem C-Programm ausgegangen:
    http://www.ixbat.de/index.php?page_id=94
    (Bei diesem Beispiel habe ich den Inhalt von makefile und Linkerscript einigermasen verstanden. )
    Ich habe harausgefunden, dass ich die sections: .ctors und .dtors brauche und ins Linkerscript eingebaut.
    Jetzt bekomme ich ncoh folgende Fehlermeldung:
    Code:
    C:\Users\Andi\programing\arm\lpc2103_blink>make
    arm-elf-ld -o blink.elf crt.o main.o -T lpc2103_flash.cmd  \
            -Map blink.map
    arm-elf-ld: blink.elf section .text._ZN8C_LpcPin6toggleEv will not fit in region ram_isp_low
    arm-elf-ld: section .bss [40000120 -> 4000012b] overlaps section .text._ZN8C_Lpc Pin6toggleEv [4000011c -> 40000143]
    arm-elf-ld: region ram_isp_low overflowed by 36 bytes
    main.o: In function `C_Pin':
    C:\Users\Andi\programing\arm\lpc2103_blink/main.cpp:21: undefined reference to `vtable for C_Pin'
    main.o:(.rodata._ZTI8C_LpcPin[_ZTI8C_LpcPin]+0x0): undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info'
    main.o:(.rodata._ZTI8C_LpcPin[_ZTI8C_LpcPin]+0x10): undefined reference to `typeinfo for C_Pin'
    make: *** [blink.elf] Error 1
    Mein Projekt habe ich angehängt...

    Schon mal Danke,
    ein verzweifelter Drew
    Angehängte Dateien Angehängte Dateien


  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.544
    Könnte es sein, dass etwas nicht eingebunden ist, sich im falschen Ordner befindet oder nicht richtig eingebunden ist? In der 2. und 3. Zeile steht "undefined reference to ...". Das deutet darauf hin.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hallo,
    danke für Deine Antwort.
    C_PIN ist meine Klasse. Die ist in main.cpp sicher vorhanden. Alledings sicht der Linker nach vtable für C_PIN. Könnte sein, dass da tatsächlich was fehlt? Ich habe bis jetzt keine Libs eingebunden.
    Brauche ich für C++ (mit virtuellen Klassen) eine bestimmte Bibliothek? Brauche ich Libc.a oder Libgcc.a. Laut Beschreibung hat das nichts mit C++ zu tun, oder?

    Was mich auch beunruhigt ist, dass er versucht was in die Section: ram_isp_low zu legen. Die sollte eigentlich für den internen Bootloader reserviert sein!
    Fehlt hier vielleicht noch eine Section, die er nicht findet und desshalb mal was nach ram_isp_low legt?

    Drew


  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Nachtrag...
    Ich hab gerade noch einen Versuch gestartet und die virtuelle Klasse raus geschmissen. So wurde es erfolgreich übersetzt. Das Problem hat also mit der virtuellen Klasse zu tun.

    Drew


  5. #5
    Benutzer Stammmitglied
    Registriert seit
    16.06.2008
    Ort
    Graz
    Beiträge
    41
    Kennst du die Seite schon, da gehts konkret um C++ auf einem LPC2129.
    http://www.siwawi.arubi.uni-kl.de/av...ects/#lpc_cpp1

    Ich hab zwar noch nicht mit C++ auf den ARMs gearbeitet, aber soweit ich weis braucht man in C++ wenn man eine virtuelle Klasse hat, einen vtable, der entscheidet von wem der Destruktor dann aufgerufen wird. Ich bezweifle mal, dass das in den files von Benedikt Sauter schon implementiert ist.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    hallo,
    danke, ich denke, das hat mir etwas weiter geholfen. Allerdings kann ich das Beispiel nicht übersetzen.
    Ich verwende yagarto und da sind die Includes in:
    arch/philips/newlib-lpc/
    nicht mit drin.
    Ich hab die dann in einer Instllation von WinArm gefunden und rein kopiert. Das compiliren geht jetzt aber der Linker findet newlib-lpc.a nicht. Das gibt es aber nur als Sourcen (?) und die kann ich nicht übersetzen...

    Das ist doch verhext...

    Kann mir jemand weiterhelfen?

    Drew


Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •