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

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.