STM32F3 Fehlermeldungen beim Buildvorgang

Gast #3297545
Lesenswert?

Hallo zusammen,

ich mache gerade meine ersten SChritte mit dem STM32F3Discovery Board. 
Ich versuche ein Template zu erstellen. Das klappte ja soweit auch ganz 
gut, bis ich zu einem Punkt gekommen bin, an dem ich einfach nicht 
weiter weiß.
Ich benutzte Eclipse und ARM GCC.

Es erscheinen als erstes folgende Fehlermeldungen:

Building target: Template_Project.elf
Invoking: Cross GCC Linker
arm-none-eabi-gcc "-Wl,-Map=Template_Project.map" -o 
"Template_Project.elf"  ./src/main.o ./src/stm32f30x_it.o 
./src/system_stm32f30x.o  ./STM32F3_Discovery/stm32f3_discovery.o 
./STM32F30_StdPeriph_Library/stm32f30x_adc.o 
./STM32F30_StdPeriph_Library/stm32f30x_can.o 
./STM32F30_StdPeriph_Library/stm32f30x_comp.o 
./STM32F30_StdPeriph_Library/stm32f30x_crc.o 
./STM32F30_StdPeriph_Library/stm32f30x_dac.o 
./STM32F30_StdPeriph_Library/stm32f30x_dbgmcu.o 
./STM32F30_StdPeriph_Library/stm32f30x_dma.o 
./STM32F30_StdPeriph_Library/stm32f30x_exti.o 
./STM32F30_StdPeriph_Library/stm32f30x_flash.o 
./STM32F30_StdPeriph_Library/stm32f30x_gpio.o 
./STM32F30_StdPeriph_Library/stm32f30x_i2c.o 
./STM32F30_StdPeriph_Library/stm32f30x_iwdg.o 
./STM32F30_StdPeriph_Library/stm32f30x_misc.o 
./STM32F30_StdPeriph_Library/stm32f30x_opamp.o 
./STM32F30_StdPeriph_Library/stm32f30x_pwr.o 
./STM32F30_StdPeriph_Library/stm32f30x_rcc.o 
./STM32F30_StdPeriph_Library/stm32f30x_rtc.o 
./STM32F30_StdPeriph_Library/stm32f30x_spi.o 
./STM32F30_StdPeriph_Library/stm32f30x_syscfg.o 
./STM32F30_StdPeriph_Library/stm32f30x_tim.o 
./STM32F30_StdPeriph_Library/stm32f30x_usart.o 
./STM32F30_StdPeriph_Library/stm32f30x_wwdg.o
./src/main.o: In function `main':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
2:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
5:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
7:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:26 
2:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:26 
6:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:27 
3:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:27 
7:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:28 
5:  undefined reference to `acos'
./src/main.o:/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../ 
src/main.c:289:  more undefined references to `acos' follow
./src/main.o: In function `main':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:31 
7:  undefined reference to `atan2f'


Es scheine ja alles mathematische Funktionen zu sein. Math.h ist 
eingebunden. Nach meinen bisherigen Nachforschungen scheint dies ein 
Problem mit Compiler-Flags zu sein, soweit ich das verstanden habe. 
Allerdings habe ich keine Ahnung welche genau und wo ich die unter 
Eclipse eintragen muss. Ich arbeite ohne extra Makefile, das heißt alles 
notwendigen Einstellungen und Pfade sind in Eclipse (CDT) vorgenommen 
wurden.
Gast #3297547
Lesenswert?

>Nach meinen bisherigen Nachforschungen scheint dies ein
>Problem mit Compiler-Flags zu sein

Nee, das ist ein Problem mit den Linker Flags.
Du musst libm.a einbinden. Das machst du mit -lm.
Oder evtl. nur m bei den Libraries die der Linker
mit einbinden soll.
Gast #3299179
Lesenswert?

Hallo,

erst eimal vielen Dank für die Hilfe!

Ich habe das mal probiert, aber so richtig weiter gekommen bin ich jetzt 
immer noch nicht. Die Meldungen sehen immer noch ziem lich ähnlich aus:

------------------------------------------------------------------------ 
-
20:22:33 **** Incremental Build of configuration Debug for project 
Template_Project ****
make all
Building target: Template_Project.elf
Invoking: Cross GCC Linker
arm-none-eabi-gcc "-Wl,-Map=Template_Project.map" -mcpu=cortex-m4 
-mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -ffunction-sections 
-fdata-sections -g -Wl,--gc-sections -static  -lm -lc -o 
"Template_Project.elf"  ./src/main.o ./src/stm32f30x_it.o 
./src/system_stm32f30x.o  ./STM32F3_Discovery/stm32f3_discovery.o 
./STM32F30_StdPeriph_Library/stm32f30x_adc.o 
./STM32F30_StdPeriph_Library/stm32f30x_can.o 
./STM32F30_StdPeriph_Library/stm32f30x_comp.o 
./STM32F30_StdPeriph_Library/stm32f30x_crc.o 
./STM32F30_StdPeriph_Library/stm32f30x_dac.o 
./STM32F30_StdPeriph_Library/stm32f30x_dbgmcu.o 
./STM32F30_StdPeriph_Library/stm32f30x_dma.o 
./STM32F30_StdPeriph_Library/stm32f30x_exti.o 
./STM32F30_StdPeriph_Library/stm32f30x_flash.o 
./STM32F30_StdPeriph_Library/stm32f30x_gpio.o 
./STM32F30_StdPeriph_Library/stm32f30x_i2c.o 
./STM32F30_StdPeriph_Library/stm32f30x_iwdg.o 
./STM32F30_StdPeriph_Library/stm32f30x_misc.o 
./STM32F30_StdPeriph_Library/stm32f30x_opamp.o 
./STM32F30_StdPeriph_Library/stm32f30x_pwr.o 
./STM32F30_StdPeriph_Library/stm32f30x_rcc.o 
./STM32F30_StdPeriph_Library/stm32f30x_rtc.o 
./STM32F30_StdPeriph_Library/stm32f30x_spi.o 
./STM32F30_StdPeriph_Library/stm32f30x_syscfg.o 
./STM32F30_StdPeriph_Library/stm32f30x_tim.o 
./STM32F30_StdPeriph_Library/stm32f30x_usart.o 
./STM32F30_StdPeriph_Library/stm32f30x_wwdg.o
./src/main.o: In function `main':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
2:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
5:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:25 
7:  undefined reference to `sqrt'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:26 
2:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:26 
6:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:27 
3:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:27 
7:  undefined reference to `acos'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:28 
5:  undefined reference to `acos'
./src/main.o:/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../ 
src/main.c:289:  more undefined references to `acos' follow
./src/main.o: In function `main':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:31 
7:  undefined reference to `atan2f'
./src/main.o: In function `Demo_USB':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
1:  undefined reference to `Set_System'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
2:  undefined reference to `Set_USBClock'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
3:  undefined reference to `USB_Interrupts_Config'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
5:  undefined reference to `USB_Init'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
7:  undefined reference to `bDeviceState'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:44 
7:  undefined reference to `bDeviceState'
./src/main.o: In function `Demo_GyroConfig':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:46 
9:  undefined reference to `L3GD20_Init'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:47 
3:  undefined reference to `L3GD20_FilterConfig'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:47 
5:  undefined reference to `L3GD20_FilterCmd'
./src/main.o: In function `Demo_GyroReadAngRate':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:49 
1:  undefined reference to `L3GD20_Read'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:49 
3:  undefined reference to `L3GD20_Read'
./src/main.o: In function `Demo_CompassConfig':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:54 
9:  undefined reference to `LSM303DLHC_MagInit'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:56 
0:  undefined reference to `LSM303DLHC_AccInit'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:56 
9:  undefined reference to `LSM303DLHC_AccFilterConfig'
./src/main.o: In function `Demo_CompassReadAcc':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:58 
6:  undefined reference to `LSM303DLHC_Read'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:58 
7:  undefined reference to `LSM303DLHC_Read'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:60 
8:  undefined reference to `LSM303DLHC_Read'
./src/main.o: In function `Demo_CompassReadMag':
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:65 
6:  undefined reference to `LSM303DLHC_Read'
/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../src/main.c:65 
8:  undefined reference to `LSM303DLHC_Read'
./src/main.o:/home/dirk/stm_projects/STM32F3_Template/Template/Debug/../ 
src/main.c:659:  more undefined references to `LSM303DLHC_Read' follow
collect2: error: ld returned 1 exit status
make: *** [Template_Project.elf] Fehler 1

20:22:33 Build Finished (took 496ms)
------------------------------------------------------------------------ 
-

Was mache ich denn falsch???
Gast #3299243
Lesenswert?

>Was mache ich denn falsch???

Du fügst nur Headerdateien in deine main.c ein.
Du musst aber auch entsprechende *.c Dateien zu deinem
Projekt hinzufügen in denen diese Funktionen enthalten sind.

Alle deine Fehlermeldungen kommen vom Linker und nicht vom Compiler.

Beispiel:

undefined reference to `LSM303DLHC_Read'

Dein Compiler hat keine C Datei compiliert in der
diese Funktion enthalten ist. Es wurde also auch keine
Objektdatei erzeugt in der der Linker diese finden kann.

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