ARM CORTEX M4F TI TIVA C Linking error undefined reference to.

Gast #5068693
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!
Gast #5069076
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.
Gast #5079866
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
Gast #5079898
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.

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