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.
>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.
Es ist dringend zu empfehlen, beim Compilen und Linken "-mfpu=fpv4-sp-d16 -mfloat-abi=hard" anzugeben, um die auf deinem Controller vorhandene FPU zu nutzen, da du ja scheinbar floatingpoint-Rechnungen machst. Siehe STM32: GCC
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???
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.