Forum: Compiler & IDEs STM32 Kompilierungsschwierigkeiten


von Scott F. (scott_f)


Lesenswert?

Hallo zusammen,
ich lese gerade das Buch "Beginning STM32" von Warren Gay und versuche 
die Beispiele (mit libopencm3) mit Cygwin unter Windows zu kompilieren - 
wie auch im Buch beschrieben.
Nun habe ich das Problem, dass obwohl der Pfad in der Makedatei 
angegeben ist, die Dateien nicht gefunden werden. Der ganze Pfad zu den 
Dateien ist:
/home/root/STM32/stm32f103c8t6/libopencm3/include/libopencm3/cm3/scb.h

Beim Kompilieren sieht man ebenfalls, dass 
-I/home/root/STM32/stm32f103c8t6/libopencm3/include angegeben wurde - 
ich habe es auch versucht die benötigten Header-Dateien in das 
Verzeichnis der Quelldateien zu kopieren und #include<datei.h> in 
#include"datei.h" zu ändern. Das funktioniert, aber es sind viel zu 
viele Dateien die ich ändern und kopieren müsste.

Was könnte hier der Fehler sein?

Danke und viele Grüße,
Scott

Hier ist die Ausgabe:
1
[~/STM32/stm32f103c8t6]
2
$ make
3
make -C rtos/libwwg
4
make[1]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
5
make -w -C ./src
6
make[2]: Entering directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
7
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float -mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common -ffunction-sections -fdata-sections -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -I./rtos -I. -MD -Wall -Wundef -DSTM32F1 -I/home/root/STM32/stm32f103c8t6/libopencm3/include -I/home/root/STM32/stm32f103c8t6//rtos/libwwg/include -o usbcdc.o -c usbcdc.c
8
usbcdc.c:7:10: fatal error: libopencm3/cm3/scb.h: No such file or directory
9
7 | #include <libopencm3/cm3/scb.h>
10
| ^~~~~~~~~~~~~~~~~~~~~~
11
compilation terminated.
12
make[2]: *** [../../../Makefile.incl:111: usbcdc.o] Error 1
13
make[2]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg/src'
14
make[1]: *** [Makefile:8: all] Error 2
15
make[1]: Leaving directory '/home/root/STM32/stm32f103c8t6/rtos/libwwg'
16
make: *** [Makefile:41: libwwg] Error 2

von pegel (Gast)


Lesenswert?

Bist Du beim installieren in den falschen Pfad geraten?

Ich habe es mal unter Linux probiert:
1
cd ~
2
mkdir Apress
3
cd Apress/
4
git clone https://github.com/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC.git
5
cd Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/
6
git clone https://github.com/libopencm3/libopencm3.git
7
make

Damit wird alles richtig übersetzt.

von pegel (Gast)


Lesenswert?

Noch einmal präziser:

wenn Du ein spezielles Projekt compilieren möchtest, musst Du das in das 
makefile im Pfad "Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/" eintragen.
Dann das make auch in diesem Pfad aufrufen.

z.B.: PROJECTS = miniblink uart uarthwfc hse rtos/oled

Das compiliert dann all diese Projekte.
Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte 
auch wieder gelöscht.

von Scott F. (scott_f)


Lesenswert?

Vielen Dank für deine Antwort.

Ich habe endlich das Problem gefunden. Es gab bei Cygwin Probleme mit 
den Dateipfaden. Damit der Compiler die Pfade findet, musste ich in der 
Makedatei statt dem Linux Pfad Format home/folder/, alle Pfade ins 
Windows Format umschreiben D:\home\folder. Warum davor manche Dateien 
gefunden wurden und andere nicht ist mir bis heute nicht klar.

von Kurt (kurtcontroller)


Lesenswert?

Hi Leute,

ich beschäftige mit stm32f103 und stm32f072. Reine Hobbyanwendung.
Es macht immer wieder Spaß im hohen Alter noch zu Lernen.

Diese Hardware habe ich.
Blue-pill, black-pill und NUCLEO-64 STM32F103, STM32F072.

Nur beim "make clean" habe sie gespart, es wird nicht alles erstellte
auch wieder gelöscht.
Nöö, so geht es "make clobber"

Ich habe es mal unter Linux armhf probiert:
ODROID-XU4 BS ARMBIAN

make -C rtos/libwwg
make[1]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg'
make -w -C ./src
make[2]: Entering directory 
'/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/rtos/libwwg/s 
rc'
arm-none-eabi-gcc -Os -g -std=c99 -mthumb -mcpu=cortex-m3 -msoft-float 
-mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration 
-Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common 
-ffunction-sections -fdata-sections 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include  -I./rtos -I.  -MD -Wall -Wundef -DSTM32F1 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC/libopencm3/i 
nclude 
-I/home/kurt/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg 
/include   -o getline.o -c getline.c
getline.c:5:20: fatal error: memory.h: No such file or directory
 #include <memory.h>
                    ^
compilation terminated.

Die Datei memory.h fehlt. Ich in der Datei getline.c die //#include 
"memory.h"
auskommentiert. Muss noch geprüft werden.

@ Scott F.
Wie ist das Buch nach den ersten Übungen.
Ich möchte es vielleicht kaufen.

Schau mal im Pfad
/home/user/Apress/Beg-STM32-Devel-FreeRTOS-libopencm3-GCC//rtos/libwwg/i 
nclude
hier müsste memory.h sein?

Schöne Grüße vom Rhein
Gruß
Kurt

von Kurt (kurtcontroller)


Lesenswert?

Fehler gefunden.
When compiling and you get the error message getline.c:5:20: fatal 
error: memory.h: No such file or directory, at the line where it is 
coded as "#include <memory.h>", you may have to change that to "#include 
<string.h>" instead. The compiler folks have sometimes moved the header 
file.


Nachtrag:

#include <string.h> anstatt #include <memory.h> und es funktioniert.

Gruß
Kurt

: Bearbeitet durch User
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.