Forum: Mikrocontroller und Digitale Elektronik ARM CORTEX M4F TI TIVA C Linking error undefined reference to.


von Johannes (Gast)


Lesenswert?

Hallo,

ich habe Probleme beim Linken eines Programms.
Das Programm ist für einen Mikrocontroller von Texas Instruemts. Der 
Prozessor ist ein ARM CORTEX M4F und es handelt sich um den 
Mikrocontroller TM$C123G.

Ich kompeliere das Programm in Linux und bin der folgenden Anleitung 
gefolgt:
http://chrisrm.com/howto-develop-on-the-ti-tiva-launchpad-using-linux/

Diese Fehlermeldung bekomme ich beim Linken:

//////////////////////////////////////////////////////////////////////// 
////////////////////////////////////////////////////////////////////

 -Wall  -pedantic -DPART_TM4C123GH6PM -c 
-I/home/gensheimer/code/tivaware -DTARGET_IS_BLIZZARD_RA1
arm-none-eabi-ld -o build/output.elf build/main.o build/startup_gcc.o 
build/Segway/Segway.o build/Sensor/ADC.o build/Sensor/ADCSensor.o 
build/Sensor/GPIOSensor.o build/Antrieb/PWM.o build/Antrieb/Motor.o 
build/Configuration/Configuration.o build/Segway/Simulation.o -T 
TM4C123GH6PM.ld --entry ResetISR --gc-sections
build/main.o:(.ARM.exidx.text.startup.main+0x0): undefined reference to 
`__aeabi_unwind_cpp_pr1'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway13setMotorSpeedEP5Motor 
l+0x0):  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway32setCurrentSteeringPos 
itionAsZeroEv+0x0):  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway27setCurrentOrientation 
AsZeroEv+0x0):  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway14doBatteryCheckEv+0x0) 
:  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o: In function `Segway::initHelpers()':
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:484:  undefined reference to `Timer::initTimer(unsigned long)'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway11initHelpersEv+0x0): 
undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o: In function `Segway::main()':
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:459:  undefined reference to `Timer::setIsTimerEnabled(bool)'
build/Segway/Segway.o:(.ARM.exidx.text.startup._ZN6Segway4mainEv+0x0): 
undefined reference to `__aeabi_unwind_cpp_pr0'
build/Segway/Segway.o: In function `Segway::timerFunction()':
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:21:  undefined reference to `Timer::resetInterruptFlag()'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:64:  undefined reference to `__aeabi_f2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:64:  undefined reference to `__aeabi_dmul'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:64:  undefined reference to `__aeabi_d2f'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:227:  undefined reference to `__aeabi_i2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:227:  undefined reference to `__aeabi_ddiv'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:227:  undefined reference to `__aeabi_d2f'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:228:  undefined reference to `__aeabi_i2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:228:  undefined reference to `__aeabi_ddiv'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Segway/Se 
gway.cpp:228:  undefined reference to `__aeabi_d2f'
build/Segway/Segway.o:(.ARM.exidx.text._ZN6Segway13timerFunctionEv+0x0): 
undefined reference to `__aeabi_unwind_cpp_pr0'
build/Sensor/ADC.o: In function `ADC::getChannelValue(unsigned long)':
/home/gensheimer/CompilingApplication/tiva-template-master/src/Sensor/AD 
C.cpp:154:  undefined reference to `__aeabi_ui2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Sensor/AD 
C.cpp:154:  undefined reference to `__aeabi_dmul'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Sensor/AD 
C.cpp:154:  undefined reference to `__aeabi_d2uiz'
build/Sensor/ADCSensor.o:(.ARM.exidx.text._ZN9ADCSensor15getIntegerValue 
Ev+0x0):  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Antrieb/PWM.o: In function `PWM::setChannelPWMRatio(unsigned 
char)':
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_ui2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_f2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_ddiv'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_dmul'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_dsub'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_dadd'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:91:  undefined reference to `__aeabi_d2uiz'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_ui2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_f2d'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_ddiv'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_dmul'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_dsub'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_dadd'
/home/gensheimer/CompilingApplication/tiva-template-master/src/Antrieb/P 
WM.cpp:96:  undefined reference to `__aeabi_d2uiz'
build/Antrieb/Motor.o:(.ARM.exidx.text._ZN5Motor4initEPN13Configuration1 
3s_MotorConfigE+0x0):  undefined reference to `__aeabi_unwind_cpp_pr0'
build/Antrieb/Motor.o:(.ARM.exidx.text._ZN5Motor8setSpeedEh+0x0): 
undefined reference to `__aeabi_unwind_cpp_pr0'
make: *** [build/output.elf] Error 1

//////////////////////////////////////////////////////////////////////// 
////////////////////////////////////////////////////////////////////

Ich denke es ist ein Problem mit den linker flags aber ich weiß nicht 
woran es liegt. Auch eine umfangreiche Google Suche hat mich nicht 
weitergebracht.

Mein Linker: arm-none-eabi-ld
Meine Linker flags: -o $@ $^ -T $(LD_SCRIPT) --entry ResetISR 
--gc-sections


Ich brauche das Programm so schnell wie möglich also weiß ich wirklich 
jede Hilf zu schätzen!

von Guukel (Gast)


Lesenswert?


von Beitrag (Gast)


Lesenswert?

Zum Linken immer (na ja, meistens) das betreffende gcc/g++ Kommando 
benutzen, nicht den Linker direkt aufrufen.
Damit werden (einige?) Libs implizit mitgelinkt, die man beim 
Direktaufruf des Linkers explizit spezifizieren müsste.

von Johannes (Gast)


Lesenswert?

Hey,

Danke hat mit dem gcc und ein paar weiteren Flags funktioniert.
Ich musste den FPU Ordner und die darin enthaltenen Bibliotheken mit 
einbinden. Funktioniert aber nur mit dem arm-none-eabi-gcc oder ...-g++ 
und nicht mit ...-ld.

LG

von Beitrag (Gast)


Lesenswert?

>Funktioniert aber nur mit dem arm-none-eabi-gcc oder ...-g++
>und nicht mit ...-ld.

Das würde auch mit dem ld direkt funktionieren. Ist halt umständlicher.

Mit

$ gcc -v xx.c

sollten die einzelnen, vom gcc aufgerufenen Kompilierschritte 
detailliert
aufgelistet werden.

Das, was dann unter dem *-ld Kommando erscheint müsste  manuell
aufgerufen das gleiche Link-Ergebnis liefern.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...